【问题标题】:Export data to CSV using nzsql使用 nzsql 将数据导出到 CSV
【发布时间】:2015-04-17 17:44:59
【问题描述】:

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

【问题讨论】:

    标签: shell netezza


    【解决方案1】:

    每当您想从 Netezza 导出数据时,您都需要使用它的外部表功能。

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

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

    如果您通过 Aginity Workbench 等工具通过 JDBC、ODBC 或 OLE-DB 连接到 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" 
    

    【讨论】:

    • 我可以使用带有 -o 标志的 nzsql。如果我用那个方法有什么问题吗
    • 可以,但是速度有点慢。我会将其添加到答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多