gpt4 book ai didi

sql - 将数据从 .csv 复制到 Vertica 表

转载 作者:行者123 更新时间:2023-12-05 06:32:01 25 4
gpt4 key购买 nike

我正在尝试将数据从平面文件复制到 Vertica 表中。我的数据是 ENCLOSED BY '^' 并使用 DELIMITER '|'。如果 markdown 翻译的很有趣,数据用克拉括起来,并用竖线分隔。

这是用于创建表的 CREATE TABLE 表语句:

创建表 SCHEMA.TEST_TABLE
(
UNIQUE_ID float
, TEST_DT_TM 时间戳tz
, TEST2_DT_TM 时间戳
)
未分段的所有节点;

这是我正在使用的复制语句:

复制 SCHEMA.TEST_TABLE
(
唯一身份
, 测试_DT_TM
, TEST2_DT_TM
)
来自本地“file_name.csv”,由“^”分隔符“|”包围SKIP 1 ABORT ON ERROR TRAILING NULLCOLS;

我收到以下错误:

错误:复制:输入记录 5754 已被拒绝(第 4 列 (TEST2_DT_TM) 的 timestamptz 格式“无效”。timestamptz 的输入语法无效:“”)

原始格式的记录 5754 看起来像这样......

123|^04/09/17 12:23:33^|^^|

在从中提取此平面文件的数据库中,TEST2_DT_TM(写为 ^^ 的字段)为空。但是,出于某种原因,Vertica 不想将其接受到我在上面的 create table 语句中为 TEST2_DT_TM 定义的 timestamptz 字段中.我相当确定这是问题所在,因为一旦我从文件中手动删除了两个插入符,它就会读取.. || .. 然后记录被接受。

如果字段被翻译成空字符串,我还尝试在我的复制语句中添加 NULL AS ''NULL AS ' ' 的组合而不是真正的 null,但这似乎也不起作用。

有人对这种行为有任何解释吗?之前多次将 .csv 复制到表中时,我使用了 enclosed by + delimiter 组合,没有任何问题。

我知道可能有替代方案/解决方法可以将其纳入表格,但在研究了一段时间之后,我真的很想了解根本原因。

如果我可以提供任何其他信息以更好地帮助交流我的问题,请告诉我。

最佳答案

您陷入了不断重复的讨论:空字符串(^^ 在您的示例中使用脱字符作为字符串定界符)不是 NULL 值。并且时间戳不是字符串,因此空字符串确实是时间戳z 的错误文字。

通过向 COPY 命令添加 NULL 选项,尝试不为 null 设置任何值,并指定 NULL 文字。

复制命令:

COPY test_table (
UNIQUE_ID
, TEST_DT_TM
, TEST2_DT_TM
)
FROM LOCAL 'copyemptytz.csv'
ENCLOSED BY '^'
DELIMITER '|'
NULL ''
SKIP 1
ABORT ON ERROR
TRAILING NULLCOLS;

测试数据:(最后一行是你的问题行)

unique_id|test_dt_tm|test2_dt_tm|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^||

关于sql - 将数据从 .csv 复制到 Vertica 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51548343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com