Mysql PostGreSQL CSV导入行分隔符
我正在尝试从MySQL表导出数据,并将该数据导入PgSQl数据库 从MySQL导出脚本Mysql PostGreSQL CSV导入行分隔符,mysql,postgresql,csv,Mysql,Postgresql,Csv,我正在尝试从MySQL表导出数据,并将该数据导入PgSQl数据库 从MySQL导出脚本 select column_names from from table_name LIMIT 2 INTO OUTFILE 'E:/CSV_files/record_main.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ';' PgSQL导入脚本 COPY record_main("column_names ") FRO
select column_names from from table_name LIMIT 2
INTO OUTFILE 'E:/CSV_files/record_main.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY ';'
PgSQL导入脚本
COPY record_main("column_names ") FROM 'E:/CSV_files/record_main.csv'
WITH DELIMITER ',' NULL '\N' ESCAPE ';' CSV
当我尝试导出和导入CSV时,上面的代码对我来说运行良好
但是,当我将选择限制1增加到2或任意值时,它会导致错误
错误:上一个预期列之后有额外数据
上下文:复制记录,第1行:>“12635”、“55025”、“1”、“ASCS”、“P”、“5320700”、“2015-01-01>00:00:00”、\N\N\N\N\N,“契约”、\N\N\N\N、…“
然后打开CSV文件,我手动将一行数据分隔为两行数据
我从每一行的末尾去掉了分号
这一次效果很好。
我认为行分隔符中有错误。我的问题是,我如何向PgSQl说明行分隔符是这样的。就我所知,正如我给出的分隔符一样,postgresql希望行之间用新行字符分隔: “复制自”可以处理以换行符、回车符或回车符/换行符结尾的行
因此,您必须调整mysql导出以使用新行字符作为行分隔符,或者需要预处理转储以替换
代码>字符加新行。据我所知,postgresql希望行之间用新行字符分隔:
“复制自”可以处理以换行符、回车符或回车符/换行符结尾的行
因此,您必须调整mysql导出以使用新行字符作为行分隔符,或者需要预处理转储以替换代码>带新行的字符。从您应该用于复制的语法来看
是:
COPY record_main FROM 'E:/CSV_files/record_main.csv' DELIMITERS ',' CSV;
如您所见,这与您尝试运行的命令不同。但是COPY
在数据库服务器上运行,需要根帐户。如果没有,也可以尝试使用\copy
:
\copy record_main(col1, col2, ...) FROM 'E:/CSV_files/record_main.csv'
DELIMITER ',' CSV
更新:
@shadow正确地指出,您需要将MySQL数据导出到CSV文件中,该文件的行由行分隔符(而不是分号)分隔。但是您的Postgres copy语法看起来不太正确,所以这个答案可能仍然会对您有所帮助。从您应该用于copy
的语法来看:
COPY record_main FROM 'E:/CSV_files/record_main.csv' DELIMITERS ',' CSV;
如您所见,这与您尝试运行的命令不同。但是COPY
在数据库服务器上运行,需要根帐户。如果没有,也可以尝试使用\copy
:
\copy record_main(col1, col2, ...) FROM 'E:/CSV_files/record_main.csv'
DELIMITER ',' CSV
更新:
@shadow正确地指出,您需要将MySQL数据导出到CSV文件中,该文件的行由行分隔符(而不是分号)分隔。但是你的Postgres复制语法看起来有点不对劲,所以也许这个答案对你仍然有帮助。谢谢大家
在从MySQL创建CSV时,我给出了错误的行分隔符,这是错误的
正确答案
INTO OUTFILE 'E:/CSV_files/record_main-new.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
无需在PostgreSQL中自动或默认指定行分隔符“\n”
从CSV到PostgreSQL导入
FROM 'E:/CSV_files/record_main-new.csv'
WITH DELIMITER ',' NULL '\N' CSV
谢谢各位
在从MySQL创建CSV时,我给出了错误的行分隔符,这是错误的
正确答案
INTO OUTFILE 'E:/CSV_files/record_main-new.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
无需在PostgreSQL中自动或默认指定行分隔符“\n”
从CSV到PostgreSQL导入
FROM 'E:/CSV_files/record_main-new.csv'
WITH DELIMITER ',' NULL '\N' CSV
在\copy文件名上不使用引号。在\copy文件名上不使用引号。