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