加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – Postgres – 复制(剥离双引号)

发布时间:2020-12-13 16:02:59 所属栏目:百科 来源:网络整理
导读:我使用Postgres 8.4.4 copy,http://www.postgresql.org/docs/8.4/static/sql-copy.html,将CSV数据导入我的数据库.我的源数据中的一些值包含双引号,这些双引号在插入时被剥离,而当我通过psql执行INSERT或UPDATE语句以测试双引号时会保留.也许给出一个关于发生
我使用Postgres 8.4.4 copy,http://www.postgresql.org/docs/8.4/static/sql-copy.html,将CSV数据导入我的数据库.我的源数据中的一些值包含双引号,这些双引号在插入时被剥离,而当我通过psql执行INSERT或UPDATE语句以测试双引号时会保留.也许给出一个关于发生了什么的线索,一些值也包含逗号,这些逗号根据需要保留.

我试图在http://www.postgresql.org/docs/8.3/interactive/sql-syntax-lexical.html解决问题的基础,但没有成功.

我正在使用的复制命令是:

copy my_table (field_1,field_2,field_3 ...) from '/tmp/source.csv' with csv

源数据使用逗号分隔符双引号.如有必要,可以更改…

“价值”,“另一个价值”,“这是”另一个“价值”,“不再,谢谢”

解决方法

您必须引用嵌入式引号.
默认值是它们的两倍,因此您的数据应为:

"value","another value","this is ""another"" value","no more,thanks"

另一种方法是不加引号(但你必须引用逗号,如果有的话),就像

value,another value,this is "another" value,no more,thanks

更新:这是有效的,但你必须确保引用嵌入的”(在这种情况下通过添加反斜杠)

DROP TABLE tmp.my_table CASCADE;
CREATE TABLE tmp.my_table
        ( field_1 varchar,field_2 varchar,field_3 varchar,field_4 varchar
        );

COPY tmp.my_table (field_1,field_3,field_4)
FROM STDIN
WITH CSV DELIMITER ',' QUOTE '"' ESCAPE ''
        ;
"value","this is "another" value",thanks"
.
        ;

SELECT * FROM tmp.my_table;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读