【发布时间】:2018-09-07 14:12:52
【问题描述】:
我有一个大的 CSV 文件,需要进入 Redshift。
它有大约 500 万行。几个问题:
1) 文件的前 10 行是我想要删除/排除的乱码
2) 每当我尝试上传 csv 文件时,我总是遇到这个奇怪的故障,它说它加载成功,但上传了 0 行。我解决此问题的方法是重新格式化 CSV 中的列(将数字格式化为数字,将日期格式化为自定义日期“YYYY-MM-DD”),然后重新保存它。无论出于何种原因,它在那之后都会起作用。
有没有人有类似的问题?将这个 csv 文件转换为 redshift 的最佳方法是什么?
UPDATE - 所以我使用 COPY 命令并将我的 csv 文件从 S3 复制到 Redshift 表中。但是,我收到一个错误,我查看 stl_load_errors 并且“colname”和“raw_field_value”不匹配。这真的很奇怪。例如,“colname”将类似于“name”,但“raw_field_value”将是电话号码。我仔细检查了我的 csv 文件,但事实并非如此。有什么想法吗?这不仅仅是 1 次出现,而是很多次,而且有几行被混淆了。
【问题讨论】:
-
使用 ssis 来做这个
-
SSMS 有一个导入向导,可以选择跳过初始 [number] 行。 Redshift 有类似的东西吗?
-
您的问题提到了 CSV,但您已用“Excel”标记了此问题 - 您使用的是哪种文件格式?您不能将 Excel 工作簿直接导入 Redshift,您需要先将相关工作表保存为 CSV 文件。此外,您应该添加文件中的数据示例(以说明正在使用的格式,而不是实际数据,只是具有相同 CSV 格式的内容)并说明您正在使用哪些 COPY 选项 - 没有这些很难说可能会发生什么导致你的问题。
-
假设您实际使用的是 CSV 文件,请检查 COPY 语句中指定的 CSV 选项是否与文件格式匹配 (docs.aws.amazon.com/redshift/latest/dg/…) - 特别是您指定的是 CSV 还是 DELIMITER,无论是您需要指定 QUOTE 或 ESCAPE。
-
跳过前 10 行使用 IGNOREHEADER 10
标签: sql excel amazon-redshift