我正在从S3导入CSV文件。问题是我需要添加一个唯一标识符,因为所有数据都将存储在PostgreSQL的公共表中,我们需要知道数据来自哪个S3存储桶。
我不想解析数据并插入,因为CSV可能包含数千行,这将大大降低速度。
到目前为止,我们一直在为每个s3导入创建一个新的临时表,但是我们需要使用一个公共的永久表来提出一个不同的解决方案。
我正在从S3导入CSV文件。问题是我需要添加一个唯一标识符,因为所有数据都将存储在PostgreSQL的公共表中,我们需要知道数据来自哪个S3存储桶。
我不想解析数据并插入,因为CSV可能包含数千行,这将大大降低速度。
到目前为止,我们一直在为每个s3导入创建一个新的临时表,但是我们需要使用一个公共的永久表来提出一个不同的解决方案。
1条答案
按热度按时间ni65a41a1#
您可以(可选地)命名要插入的表中的列,这一点非常有用。
假设您正在将数据加载到一个名为loaded_data的表中,该表具有以下结构:
数据文件将a、B和c的值保存在逗号分隔的文件中。
下面的代码将加载列a、B和c,并将source_bucket保留为null:
接着说
确保这发生在事务中,这样就不会出现令人讨厌的竞态条件。
或者,您可以使用source_bucket的默认值,在每次加载之前设置该值。这将避免追溯更新语句。
更多信息和示例请参见此处:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.S3Import.html#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter