如何使用Postgresql的COPY命令导入带有连续单引号的文件?

时间:2017-11-03 16:50:28

标签: postgresql

我正在尝试将TSV文件导入Postgresql。我创建了一个表:

CREATE TABLE description (
    id TEXT
    , effective_time DATE
    , active INT
    , module_id TEXT
    , concept_id TEXT
    , language_code TEXT
    , type_id TEXT
    , term TEXT
    , case_significance_id TEXT
);

我有一个像这样的TSV文件:

    id      effectiveTime   active  moduleId        conceptId       languageCode    typeId  term    caseSignificanceId
    12118017        20170731        1       900000000000207008      6708002 en      900000000000013009      Intrauterine cordocentesis      900000000000448009
    12119013        20020131        1       900000000000207008      6709005 en      900000000000013009      Gentamicin 2''-nucleotidyltransferase   900000000000020002
    12119013        20170731        1       900000000000207008      6709005 en      900000000000013009      Gentamicin 2''-nucleotidyltransferase   900000000000448009
    12120019        20020131        1       900000000000207008      6710000 en      900000000000013009      Nitric oxide    900000000000020002

请注意,中间的两个条目有两个连续的单引号作为双引号(Gentamicin 2''-nucleotidyltransferase)的符号。

如果我跑

psql=# \copy description FROM /path/to/foo.txt WITH DELIMITER AS E'\t';

我得到ERROR: missing data for column "effective_time"。我认为这是因为''搞砸了列边界的解析。

我尝试使用''\'\'并分别使用''''CSV QUOTE E'\''查找并替换CSV QUOTE ''''个实例,但我得到了同样的结果错误。

如何编辑文件或更改\copy命令以正确导入文件?

1 个答案:

答案 0 :(得分:0)

Haleemur Ali正确地指出原始文件 - 其README声称它包含“UTF-8编码制表符分隔的平面文件,可导入任何数据库” - 实际上不是选项卡 - 分离,这可能是我编辑的错。一旦我解决了这个问题就行了。