如果您想保留双引号,请将QUOTE 设置为其他值(我会使用您的数据文件中不存在的字符)。
示例:(在 postgresql 9.6 上测试)
创建测试表
CREATE TABLE dialogue (person TEXT, dialogue TEXT);
使用以下示例数据创建一个测试数据文件(制表符分隔)。
# dialogue.txt
jim I ran into your ex. He says "hi"
rachel did he now? well tell him i said "don't call me"
在psql中执行以下命令
\copy dialogue FROM '/path/to/dialogue.txt' WITH CSV QUOTE '$' DELIMITER E'\t';
示例输出:
etl_db=# \copy dialogue from '~/Desktop/dialogue.txt' WITH CSV DELIMITER E'\t' QUOTE '$';
COPY 2
etl_db=# select * from dialogue;
person | dialogue
--------+--------------------------------------------------
jim | I ran into your ex. He says "hi"
rachel | did he now? well tell him i said "don't call me"
(2 rows)
我正在将数据导入远程数据库,但我的 PC 上的文件的相对路径不被接受。我想避免修改输入文件,因为它可能很大。
对 postgresql 使用 psql 命令行客户端。它支持 \copy 元命令,该命令环绕 sql 命令 COPY,并允许您将记录从本地计算机流式传输到服务器。
我尝试过使用“|”作为 QUOTE,因为我的数据有很多特殊字符,例如:%$^&*# 我收到此错误:错误:编码“WIN1252”中字节序列为 0x8f 的字符在编码 UTF8 时没有等效字符。我的系统语言环境是:波兰语(波兰)
COPY 命令有一个ENCODING 选项。您可以使用它来指定文件以 utf8 或其他编码进行编码。