csv - Redshift 中的 COPY CSV 命令是否按标题中定义的顺序加载?
问题描述
我有一些代码将 CSV 从 S3 拉到 Redshift 表中。我遇到的问题是,如果 CSV 以特定的列顺序存储,则复制命令与 CSV 标题中的列顺序不匹配。
因此,如果我有一个包含列的 CSVid|age|name
并且我有一个包含列的 Redshift 表id|name|age
,它将尝试按 CSV 标题顺序提取数据。因此在这种情况下,它会尝试将名称 CSV 列拉入 Redshift 中的年龄列,这会导致类型错误。
我的查询是:
copy schema.#tmp from <s3file>
iam_role <iamrole>
acceptinvchars
truncatecolumns
IGNOREBLANKLINES
ignoreheader 1
COMPUPDATE OFF
STATUPDATE OFF
delimiter ','
timeformat 'auto'
dateformat 'auto';
我是否需要在复制命令中定义列顺序以匹配两者?
解决方案
COPY
忽略文件中的列名;列从左到右匹配。
COPY
但是您可以在语句中指定列列表。使用它来告诉 PostgreSQL 文件中列的顺序。
推荐阅读
- javascript - 我怎样才能获得一个动态模式来映射我的卡片列表?
- css - Bootstrap 4:'.flex-column' 工作但不是'.justify-content-center'
- python - 如何修复项目中的 openCV cvtColor 错误?
- javascript - 在reduce方法中解构对象数组的第一个值
- linux - Yocto 自定义层在 mkfs.ext4 之后在 do_rootfs 上运行 Tune2fs
- python - Keras - 强制一个特定的权重为正
- wordpress - 检测 WooCommerce 报告选项卡是否处于活动状态
- ios - Xcode 项目:构建失败
- python - 通过自己的分类器使用 tensorflow 进行对象检测
- php - 通过 tcp 套接字将 mysql 选择查询的结果从 php 发送到 python