我可以从Netezza导出SQL查询结果吗?

时间:2013-05-06 09:55:28

标签: powershell export-to-csv netezza

我们希望在Netezza IDE中运行查询,并以CSV文件的形式导出结果。是否有任何API可以让我们使用shell或其他脚本来做同样的事情?

Netezza是否有任何人都知道的shell,使用它可以运行SQL查询并将结果以文本文件或CSV文件(首选)获取?

7 个答案:

答案 0 :(得分:2)

Aginity Workbench for Netezza可让您轻松完成。该应用程序是一个在Windows下运行的IDE。此外,它还为您提供了一个命令行界面,以便可以从Windows上的cmd或bat文件启动它。您可以使用ODBC或OleDb驱动程序连接到Netezza。 更多信息,请http://www.aginity.com

答案 1 :(得分:1)

Netezza有一个ODBC驱动程序,您应该可以使用该驱动程序让客户端应用程序从NZ中提取数据。

您还可以编写一个shell脚本,该脚本使用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本身会为我添加字段之间的逗号。

答案 2 :(得分:1)

您可以使用CREATE EXTERNAL TABLE将数据从Netezza卸载到远程系统。有关更多信息,请参阅Netezza数据加载指南,第5章。

但是,我发现最简单的是使用SQL Squirrel和JDBC。在这里下载SQL Squirrel:

http://squirrel-sql.sourceforge.net/

获取Netezza JDBC驱动程序并设置连接。连接到NZ实例后,转到SQL窗口,编写SQL查询。默认情况下,它只返回100行。但是,如果右键单击结果,则会出现一个名为“导出为CSV”的选项。选择该选项并确保选中“导出整个表”复选框。这将拉出整个事情。

答案 3 :(得分:1)

由于您的标签中有PowerShell,我假设您需要一个可在Windows下运行的工具。 Netezza的命令行客户端 - nzsql - 不适用于Windows,但有一些第三方命令行sql客户端/ shell可以与Netezza一起使用:

  • jisql,JDBC客户端;参数与SQuirreL中的相同
  • dbish,一个基于perl的ODBC客户端;如果您的ODBC DSN名为NZ,则命令行为

dbish dbi:ODBC:NZ user password

这两个工具都有将结果输出为CSV文件的选项。

答案 4 :(得分:0)

如果您想要管道分隔数据并且没有太多字段,则可以在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

答案 5 :(得分:0)

我一直在DBVisualizer的Ne​​tezza中使用它

@export on;

@export set filename="C:\Users\XXXX\Desktop\NAMEYOURFILE.xlsx" CsvColumnDelimiter=",";

SELECT * FROM TABLE;

@export off;

答案 6 :(得分:-1)

nzsql -d $ DB-u $ USER-pw $ PASS -h $ HOST -c    “SELECT OTLT_KEY ||'|'|| NHS_OTL_CD ||'|'|| NPD_ST ||'|'|| NPD_CNTY ||'|'    来自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 ||'|'    来自OTL_NHS_RLTD“-o /path/OTL_NHS_RLTD.psv