我有一个包含以下内容的文件(演示此问题的简化版本):
"abc\"def"
我想将文件的文字内容加载到表中,而不会对数据进行任何修改。以下是我目前正在做的事情:
CREATE TABLE file_content (content text);
COPY file_content FROM '/path/to/test.txt';
表格中的结果行是:
"abc"def"
换句话说,反斜杠被静默删除/忽略。我已尝试使用不同编码(UTF8,LATIN1,SQL_ASCII)的副本,但行为没有任何变化。
此外,ESCAPE和QUOTE选项最初似乎很有希望,但它们仅适用于COPY ... TO。
有没有办法从文件中加载原始数据而不进行修改?我正在使用PostgreSQL版本9.4.6。
答案 0 :(得分:1)
您需要将\
更改为\\
。您可以使用sed
:
sed -i -- 's/\\/\\\\/g' import.file
在执行上述操作之前,请确保您已检查过您的数据并进行备份。