【问题标题】:Importing Mysql CSV to PostgreSQL将 Mysql CSV 导入 PostgreSQL
【发布时间】:2016-06-16 10:13:48
【问题描述】:

我正在尝试将我从 MySQL 生成的 CSV 文件迁移到 AWS Redshift(PostgreSql)。从 Mysql 生成 CSV 文件的查询是:

select * INTO OUTFILE 'filename' FIELDS TERMINATED BY '\t'

这就是以以下形式生成输出:

1559744 WIFI    123.63.13.93    conversation_list   page_load   0.16    success {"NetworkClass":"WIFI"} android_app     2016-06-15 00:00:00 c700b6e04077489 3.1_wo___ct_cd__gmmt_cst__  4.4.2

但在加载到 Redshift 时,我遇到以下错误:

缺少换行符:在位置 7` 发现意外字符 0x57。

我用来加载 CSV 文件的查询是:

copy table_name FROM 's3://mybucket'    
credentials 'aws_access_key_id=XXXXXXXXX;aws_secret_access_key=XXXXXXXX' 
delimiter AS '\t'

谢谢

【问题讨论】:

    标签: mysql postgresql amazon-redshift


    【解决方案1】:

    尝试去掉分隔符后的AS

    copy table_name FROM 's3://mybucket'    
    credentials 'aws_access_key_id=XXXXXXXXX;aws_secret_access_key=XXXXXXXX' CSV
    delimiter '\t' MAXERROR 100000 IGNOREBLANKLINES FILLRECORD
    

    或者这个

    copy table_name FROM 's3://mybucket'    
    credentials 'aws_access_key_id=XXXXXXXXX;aws_secret_access_key=XXXXXXXX' delimiter ',' removequotes MAXERROR 100000 IGNOREBLANKLINES FILLRECORD
    

    【讨论】:

    • 既然你复制了 CSV 文件,你应该改变分隔符
    【解决方案2】:

    检查 csv 文件的编码是否与您的数据库匹配。否则使用所需的编码重新创建数据库。

    【讨论】:

    • 我无法再次使用编码创建文件,这些是日志文件,大小为 TB。
    • 不要更改文件,删除数据库,创建一个具有正确编码的新数据库
    • 我没听懂你,你能分享一些外部参考吗?
    • 打开 csv 文件,检查属性,在某处你会找到编码,现在使用此命令创建数据库。创建数据库 "db_name" WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;这里我假设编码是“UTF-8”,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多