我需要寫從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) –