Netezza IDE でクエリを実行し、結果を CSV ファイルの形式でエクスポートしたいと考えています。シェルやその他のスクリプトを使用して、同じことができる API はありますか?
SQL クエリを実行し、結果をテキスト ファイルまたは CSV ファイル (推奨) で取得できる、誰もが知っている Netezza で利用可能なシェルはありますか?
Netezza IDE でクエリを実行し、結果を CSV ファイルの形式でエクスポートしたいと考えています。シェルやその他のスクリプトを使用して、同じことができる API はありますか?
SQL クエリを実行し、結果をテキスト ファイルまたは CSV ファイル (推奨) で取得できる、誰もが知っている Netezza で利用可能なシェルはありますか?
Netezza には、クライアント アプリケーションが NZ からデータを引き出すために使用できる ODBC ドライバーがあります。
また、nzsql コマンド ライン クエリ ツールを使用してデータをファイルに保存するシェル スクリプトを作成することもできます。私は、SQL を文字列フィールドとコンマ文字の連結として書く傾向があります。
SELECT FIELD1||','||FIELD2
これは、データベースの MPP の性質を利用できるため、多くの場合、クライアント アプリが実行するよりも高速なデータベース内の連結を実行します。
PowerShell 経由で ODBC 接続を使用して、Netezza からデータを引き出すことに成功しました。
$conn = new-object system.data.odbc.odbcconnection
$conn.connectionstring = "Driver={NetezzaSQL};servername=*SERVERNAME*;port=*PORT*;database=*DATABASE*;username=*USERNAME*;password=*PASSWORD*"
$conn.open()
$cmd = new-object System.Data.Odbc.OdbcCommand
$cmd.CommandText = [System.IO.File]::ReadAllText("C:\SQL\MySQLFile.sql")
$cmd.connection = $conn
$cmd.CommandTimeout = 0
$datareader = $cmd.ExecuteReader();
$stream = new-object System.IO.StreamWriter("C:\SQL\MyExportFile.csv", TRUE)
while ($datareader.Read()) { $stream.WriteLine($datareader[0]) }
$stream.close()
$datareader.close()
$conn.close()
SQL 自体がフィールド間にコンマを追加します。
パイプで区切られたデータが必要で、フィールドがあまりない場合は、nzsql コマンドで指定するだけです。
nzsql -d $DB-u $USER-pw $PASS -h $HOST -c
"SELECT OTLT_KEY||'|'||NHS_OTL_CD||'|'||NPD_ST||'|'||NPD_CNTY||'|'
FROM OTL_NHS_RLTD" > ./OTL_NHS_RLTD.psv
nzsql -d $DB-u $USER-pw $PASS -h $HOST -c "SELECT OTLT_KEY||'|'||NHS_OTL_CD||'|'||NPD_ST||'|'||NPD_CNTY||'| ' FROM OTL_NHS_RLTD" > ./OTL_NHS_RLTD.psv
また
nzsql -d $DB-u $USER-pw $PASS -h $HOST -c "SELECT OTLT_KEY||'|'||NHS_OTL_CD||'|'||NPD_ST||'|'||NPD_CNTY||'| ' FROM OTL_NHS_RLTD" -o /path/OTL_NHS_RLTD.psv