使用nzsql将数据导出为CSV

时间:2015-04-17 17:45:00

标签: shell netezza

我想从netezza将数据导出为CSV。数据由数百万行记录组成。数据应该在引号内,并且应该具有^作为分隔符。 例如:" a" ^" b" ^" c"

1 个答案:

答案 0 :(得分:4)

每当您想从Netezza导出数据时,您都希望使用其外部表功能。

如果要导出到本地安装到Netezza主机的文件系统,可以使用:

CREATE external TABLE '/tmp/test_export.txt' USING (delimiter '^') AS
SELECT *
FROM test_export;

如果您通过JDBC,ODBC或OLE-DB通过Aginity Workbench等工具连接到Netezza,并希望将数据本地导出到您的工作站,您可以使用:

CREATE external TABLE 'c:\test_export.txt' USING (delimiter '^' remotesource odbc) AS
SELECT *
FROM test_export;

不幸的是,没有外部表选项允许您用引号括起每一列。您必须使用SQL中的连接显式地执行此操作,如下所示:

CREATE external TABLE 'c:\test_export.txt' USING (delimiter '^' remotesource odbc) AS
SELECT  '"' || col1 || '"',
        '"' || col2 || '"'
FROM test_export;

您还可以使用带有以下选项的nzsql CLI界面来实现类似的功能,但速度相当慢。例如,在我的系统上,使用外部表方法导出大约200万行,这会创建大小为3.5 GB的导出文件,需要20秒。使用CLI方法需要3到180秒。

nzsql -d DB_NAME -F "^" -t -A -o export.txt  -c "select * from test_export"