【问题标题】:Importing CSV file into cockroachdb , error in date time format将 CSV 文件导入 cockroachdb ,日期时间格式错误
【发布时间】:2017-07-17 19:57:05
【问题描述】:

我正在使用以下命令将 CSV 文件导入到 cockroachdb 中的表中:

\| IFS=","; while read a1 a2; do echo "INSERT INTO sales VALUES ($a1, $a2);"; done < sales.csv;

我的 csv 文件只有两行:

ID, time
14,2013-02-17 05:39:36.710332000

列的数据类型:

first column: NUMBER(10, 0)
second column: TIMESTAMP

我收到以下错误:

syntax error at or near "5"

INSERT INTO sales VALUES (14, 2013-02-17 05:39:36.710332000
                                         ^

基于CockroachDB documentation,我认为我使用了正确的TIMESTAMP 格式(YYYY-MM-DD HH24:MI:SSXFF)。

有什么建议吗?

我也尝试过在没有毫秒的情况下更改第二列中的数据,比如

2013-02-17 05:39:36

但我得到了同样的错误。

【问题讨论】:

    标签: csv timestamp sql-insert cockroachdb


    【解决方案1】:

    你需要引用你的时间戳字符串:

    jordan@:26257/test> INSERT INTO derp VALUES (1, 2013-02-17 05:39:36.710332000);
    invalid syntax: statement ignored: syntax error at or near "5"
    jordan@:26257/test> INSERT INTO sales VALUES(1, '2013-02-17 05:39:36.710332000')
    INSERT 1
    

    您也可以修改您的脚本来执行此操作,如下所示:

    \| IFS=","; while read a1 a2; do echo "INSERT INTO sales VALUES ($a1, '$a2');"; done < sales.csv;
    

    【讨论】:

    • 这个输入文件只缩小到一行进行测试,在这种情况下,我必须为原始文件中的所有行更改它。
    • 您也可以将输入脚本更改为引用$a2。我更新了我的答案。
    • 谢谢,我已将命令更改为 ... ($a1, '$a2') ... 错误是 pq: name ""ID"" is not defined, "" are doubled在第一列名称上
    • 嗯,听起来您的脚本正在尝试插入 CSV 的标题行。尝试从 CSV 中删除该行,或调整脚本以跳过 CSV 的第一行。
    • 我删除了标题并重新运行了命令 ... ($a1, '$a2') ...,它仍然无法正常工作,我收到此错误:INSERT INTO sales VALUES (14, e'2013-02-17 05:39:36.710332000\r');
    猜你喜欢
    • 2019-10-09
    • 2012-12-31
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2013-03-29
    • 2022-11-23
    相关资源
    最近更新 更多