我需要写从Postgres的文件到硬盘有后面紧跟一个斜杠反斜杠的字符串\/
转义反斜线在PostgreSQL
代码类似这样没有工作:
drop table if exists test;
create temporary table test (linetext text);
insert into test values ('\/\/foo foo foo\/bar\/bar');
copy (select linetext from test) to '/filepath/postproductionscript.sh';
上面的代码产生\\/\\/foo foo foo\\/bar\\/bar
...它插入一个额外的反斜杠。
当您查看临时表中,该字符串被正确地视为\/\/
,所以,E的变化之前,我不知道在哪里,当文字变成\\/\\/
我已经试过加倍\
字符串和quote_literal()没有运气。
我注意到在这里找到Postgres Manual
的解决方案运行的Postgres 9.2,UTF-8编码。
听起来就像是'copy'命令不作为数据被正确地存储在数据库中的逃逸。虽然我不知道COPY命令的行为如何。 –
[_可以在COPY数据中使用折叠字符(\\)来引用可能作为行或列分隔符使用的数据字符。特别是,如果以下字符作为列值的一部分显示,则必须在前面加上反斜杠:反斜杠本身,换行符,回车符,以及当前的分隔字符._](http://www.postgresql.org/docs /current/static/sql-copy.html) –