我正在尝试将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
命令以正确导入文件?
答案 0 :(得分:0)
Haleemur Ali正确地指出原始文件 - 其README声称它包含“UTF-8编码制表符分隔的平面文件,可导入任何数据库” - 实际上不是选项卡 - 分离,这可能是我编辑的错。一旦我解决了这个问题就行了。