Netezza 将 csv 作为空表导入

Posted

技术标签:

【中文标题】Netezza 将 csv 作为空表导入【英文标题】:Netezza imports csv as an empty table 【发布时间】:2018-05-18 12:09:08 【问题描述】:

我正在使用 INSERT INTO 命令将 CSV 文件导入 Netezza:

INSERT INTO MY_TABLE
    SELECT
        *
    FROM EXTERNAL 'C:\\file.csv'
    USING (
        REMOTESOURCE 'ODBC'
        DELIMITER ','
        MAXERRORS 100000
        SKIPROWS 1
        ESCAPECHAR '\'
    )
;

Netezza“成功”完成了任务,即没有出现错误。但是,根本不导入数据。在 1000 行中,仅导入了 100 行,并且没有任何内容包含任何内容。

我按照Netezza CSV load中的代码进行操作

我也尝试通过外部表导入数据,但以同样的方式再次失败。

我是否遗漏了什么,例如一些关键参数?这个过程以前没有问题。我认为我尝试导入的 csv 文件没有任何问题。

【问题讨论】:

【参考方案1】:

我终于找到了问题所在,这个帖子里有更详细的解释:

loading files with dates into netezza

问题在于导入日期格式。 代码中需要指定以下两行:

日期样式“DMY”

DATEDELIM '.'

【讨论】:

【参考方案2】:

根据您提供的链接,我看到了两个可能需要的参数。还有一点可能会产生影响的格式更改。

INSERT INTO MY_TABLE
SELECT * FROM 
EXTERNAL 'C:\\file.csv'
USING 
(
    DELIMITER ','
    MAXERRORS 100000
    SKIPROWS 1
    Y2BASE 2000
    ENCODING 'internal'
    REMOTESOURCE 'ODBC'
    ESCAPECHAR '\'
    QUOTEDVALUE 'DOUBLE'
)

IBM 还有一个数据加载指南,可以在here 找到。

【讨论】:

谢谢,但没用。 尝试添加带引号的双选项行。它用于指示 Netezza 在列数据周围放置双引号。我修改了上面的代码以反映这种变化。 我已经这样做了,没有任何改变。我真的不明白。 您可以尝试将您的编码更改为 UTF-8 来代替内部编码。你的编辑器变了吗? 确保列在 csv 文件中的显示顺序与表中列的顺序一致。仅仅拥有相同的列名关联是不够的。

以上是关于Netezza 将 csv 作为空表导入的主要内容,如果未能解决你的问题,请参考以下文章

将 Unicode 文本文件导入 netezza 表

将一个表的数据加载到驻留在不同数据库中的另一个表中 - Netezza

本地 CSV 作为 Python 中针对 Network Netezza DB 的 SQL where 子句的条件

查找 Netezza 服务器上的所有数据库名称

使用 nzsql 将数据导出到 CSV

Sqoop 直接导入 Netezza 表权限