【问题标题】:COPY command: AWS Aurora Postgresql, s3 extensionCOPY 命令:AWS Aurora Postgresql,s3 扩展
【发布时间】:2020-05-24 03:34:29
【问题描述】:

我正在尝试执行 COPY 命令以将 csv 文件从 S3(来自 Redshift 的 UNLOAD 命令的结果)导入 Amazon Aurora 数据库Using the aws_s3.table_import_from_s3 Function to Import Amazon S3 Data,但我不知道在命令中指明引号字符。

SELECT aws_s3.table_import_from_s3(
   'hr.person', 
    '',
    '(FORMAT CSV,HEADER true,QUOTES ''"'')',
   aws_commons.create_s3_uri('redshift-unload-tmp','resul_file.csv','us-east-2')
);

谢谢

【问题讨论】:

  • 这种困难是由单引号引起的格式参数引起的,并且还必须在QUOTES参数使用单引号?您显示的格式有效吗?或者也许使用QUOTES \'"\'
  • John,谢谢你,我修好了,如果你使用CSV格式,默认使用引号",那么我不需要指出QUOTE选项。

标签: amazon-web-services amazon-s3 amazon-redshift amazon-aurora


【解决方案1】:

我将更详细地解释我的用例:

来源 我使用 UNLOAD 命令从 Redshift 的表中“导出”数据,命令如下:

UNLOAD('SELECT * FROM schema.table')
TO 's3://bucket-name/prefix_'
HEADER
CSV
NULL AS '\000'
IAM_ROLE 'arn:aws:iam::accountNumber:role/aRoleWithRedshiftAndS3Permissions';

目标 我需要将 Redshift 数据(现在是 s3 中的文件)放入 RDS 数据库(Aurora-postgresql)中,在导入文件之前,我对 s3 中的文件进行了重命名并添加了扩展名 .csv;我使用 pgAdmin 4 作为 Postgresql 客户端,并打开查询编辑器执行以下命令:

  1. 向数据库添加新的 s3 扩展:

CREATE EXTENSION aws_s3 CASCADE;
NOTICE: installing required extension "aws_commons"
  1. 执行函数从 s3 导入文件

select aws_s3.table_import_from_s3(
	'schame.table_name',
	'',
	'(FORMAT CSV, HEADER true)',
	aws_commons.create_s3_uri('sample_s3_bucket_name','source_file_name.csv','aws-region')
);

注意:如果你使用CSV格式默认引号字符是",那么你不需要将引号表示为选项参数,如果你使用不同的引号你需要这样做字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2011-08-15
    • 2022-01-14
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多