2013-03-23 1 views
2

수백만 개의 레코드가 들어있는 커다란 csv 파일이 있는데 파이썬 스크립트를 사용하여 Netezza DB에로드하려고합니다. 간단한 삽입 쿼리를 시도했지만 매우 느립니다. 파이썬 스크립트 예제 나 몇 가지 아이디어를 어떻게 지적 할 수 있습니까? 당신의 시스템 관리자가 사용자의 유닉스/리눅스 응용 프로그램 서버에 넣을 수 있어야합니다 - Python Script를 통해 NZ Loader (Netezza Loader)를 사용하는 방법은 무엇입니까?

+0

) ... Netezza에 대해 개별 삽입 구문을 실행하려고합니까 ?? 파이썬 스크립트에서 nzload 명령 행과 쉘을 사용하십시오. –

+0

어떻게 할 수 있습니까? Netezza 데이터베이스에 연결하기 위해 aginity workbench 만 설치했기 때문에 명령 줄이나 셸에서 nzload를 실행하려면 무엇이 필요합니까? nzload를 실행하는 데 다른 것이 필요합니까? – Dhams

답변

0

당신이에서 nzload 실행하려는 컴퓨터에 설치된 nzcli을 얻을 필요가 감사합니다. 모든 것을 설정하고, 암호를 캐싱하는 등 상세한 프로세스가 있습니다. 시스템 관리자는이를 수행 할 수 있어야합니다.

일단 설정되면 NZ 제어 파일을 만들어 데이터 파일을 가리키고로드를 실행할 수 있습니다. Netezza 데이터로드 가이드에는이 작업을 수행하는 방법에 대한 자세한 지침이 나와 있습니다 (IBM을 통해 얻을 수 있음).

CREATE EXTERNAL TABLE 권한이있는 경우에도 동일하게 수행 할 수 있습니다. INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC을 사용하여 ODBC 연결에서 파일을로드 할 수 있습니다.

+0

INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC를 사용하여 데이터를 1000 개의 레코드로로드했으나 동일한 명령을 사용하여 7,000,000 개의 레코드를로드하려고 할 때 ERROR [08S01] 통신 링크 오류가 발생했습니다. . 어떤 아이디어가 문제 일 수 있습니까? – Dhams

+0

나는 때때로 Aginity와 함께 일어났습니다. Netezza의 사용자 ID에 대한 최대 쿼리 시간 설정이있을 수 있지만 실제로는 알 수 없습니다. 어쩌면 약간의 C# 또는 powershell 명령 줄 스크립트를 사용하여 ODBC 연결에 대한 SQL 문을 실행하고 오류가 계속 발생하는지 확인하십시오. –

+0

pyodbc 라이브러리를 사용하여 python 스크립트에서 동일한 작업을 시도했지만 동일한 오류가 발생했습니다. PowerShell 커맨드 라인으로 어떻게 시도 할 수 있을지 모르겠지만 어떻게 설치할 수 있습니까? – Dhams

3

Netezza 관리 도구가 설치된 경우 셸 호출을 nzload으로 만들 수 있습니다. 이 같은

뭔가 : 또한

os.system("nzload -host myhost -u myuser -pw mypassword -db MYDB -t MYTABLE -skipRows 1 -nullValue NULL -quotedValue DOUBLE -df \"C:\\myinputfile.txt\" -delim \"|\" -dateDelim \"-\" -lf c:\\logs\\nzload.log -bf c:\\logs\\nzloadbad.log") 

참조 : Calling an external command in Python

1
당신이 데이터를로드 할 nz_load4 사용할 수 있습니다

는, 이것은 지원 유틸리티/뉴질랜드/지원 /있는 contrib/빈

구문은 nzload와 동일합니다. 기본적으로 nz_load4는 4 개의 스레드를 사용하여 데이터를로드하며, 자세한 내용은 -tread 옵션 을 사용하여 32 개 스레드로 이동할 수 있습니다. nz_load4 -h

이렇게하면 스레드 수에 따라 로그 파일이 생성됩니다 (예 :