gpt4 book ai didi

csv - 将带逗号的双引号作为分隔符从 S3 导入 Amazon Redshift

转载 作者:行者123 更新时间:2023-12-05 04:10:49 25 4
gpt4 key购买 nike

我正在尝试将 CSV 文件从存储在 S3 上的 CSV 文件导入到 Redshift 数据库中。 CSV 文件被完全引用(因此即使是一个完整的整数列也使用 "引用)。

该表还包含 double ,它们也被引用并使用荷兰语分隔整数和小数点的方式(1,5 是一个半)。

基本上,我的文件如下所示:

"int_key", "double_value"
"1", "2,50"
"2", "3,50"

如果我“直接”导入它,我会得到错误:

Invalid digit, Value '"', Pos 0, Type: Integer

然后,我将 removequotes 添加到我的查询中,以正确处理我的整数。但是,现在我的双列不理解逗号:

Invalid digit, Value ',', Pos 1, Type: Double 

有什么方法可以告诉 Redshift 使用逗号来制作 double ?

文件太大,无法通过正则表达式并用句点替换逗号。

最佳答案

您的示例数据包含逗号和空格的分隔符:

"int_key", "double_value"
"1", "2,50"
"2", "3,50"

仅此一项似乎就可以阻止它加载到 Amazon Redshift 中。

但是,如果你只有一个逗号分隔符,也是可以的,例如:

"int_key","double_value"
"1","2,50"
"2","3,50"

您可以将第二个字段作为字符串加载,然后使用 REPLACE() 函数对其进行转换。

CREATE TABLE foo AS (i int, s string, f float);
COPY INTO foo FROM 's3://...' DELIMITER ',' IGNOREHEADER 1 REMOVEQUOTES;
UPDATE foo SET f = REPLACE(s, ',' , '.')::float;

运行 UPDATE 命令需要一些时间,但这比修改输入文件更容易。

关于csv - 将带逗号的双引号作为分隔符从 S3 导入 Amazon Redshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923117/

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