【发布时间】:2013-08-23 04:17:49
【问题描述】:
我有一个每行一列的大文本文件,我想将此数据文件导入 Postgres。
我有一个有效的 MySQL 脚本。
LOAD DATA LOCAL
INFILE '/Users/Farmor/data.sql'
INTO TABLE tablename
COLUMNS TERMINATED BY '\n';
我怎样才能把它翻译成 Postgres?我已经尝试过这个命令。
COPY tablename
FROM '/Users/Farmor/data.sql'
WITH DELIMITER '\n'
但是它抱怨:
错误:COPY 分隔符必须是单个单字节字符
【问题讨论】:
-
'\n'是一个两个字符的字符串(取决于字符串设置和 PostgreSQL 版本),你想说E'\n'来换行。但这可能会给你一个“COPY 定界符不能是换行符或回车”错误,因为如果它们都使用相同的定界符,PostgreSQL 将无法区分列和行之间的区别。我猜您将不得不将您的数据文件修改为其他布局(甚至可能通过将其加载到 MySQL 中,然后将其从那里转储到 SQL 或 CSV)。 -
你是对的。我将采用转储方法或编写 perl 脚本。真奇怪,Postgres 无法弄清楚,一个 10 列的表每隔 10 行就会有一个新行。将您的评论作为答案,以便我接受。
标签: mysql database postgresql