何百万ものレコードを含む巨大なcsvファイルがあり、Pythonスクリプトを使用してNetezza DBにロードしたいのですが、単純な挿入クエリを試しましたが、非常に低速です。いくつかの例のPythonスクリプトまたはいくつかのアイデアを教えてもらえますか?
ありがとうございました
If you have the Netezza Admin Tools installed, you can make a shell call to nzload
.
Something like this:
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")
See also: Calling an external command in Python
nz_load4 を使用してデータをロードできます。これはサポート ユーティリティです /nz/support/contrib/bin
構文は nzload と同じです。デフォルトでは、nz_load4 は 4 つのスレッドを使用してデータをロードします。詳細については、-tread オプションを使用して最大 32 スレッドにできます。nz_load4 -h を使用してください。
これにより、次のように、スレッドの数に基づいてログ ファイルが作成されます。
nzload を実行するマシンに nzcli をインストールする必要があります。システム管理者は、それを unix/linux アプリケーション サーバーに配置できるはずです。すべての設定、パスワードのキャッシュなどの詳細なプロセスがあります-システム管理者はそれを実行できるはずです。
セットアップが完了したら、NZ 制御ファイルを作成してデータ ファイルをポイントし、ロードを実行できます。Netezza Data Loading ガイドには、これらすべてを行う方法に関する詳細な手順が記載されています (IBM から入手できます)。
CREATE EXTERNAL TABLE 特権を持っている場合は、アジリティを介して行うこともできます。ODBCINSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC
接続からファイルをロードすることができます。