我有几个文件保存为tsv。我想将它们插入到postgresql
db中,用sql分析它们。
但是,我的问题是INSERT
如何将postgresql 9.2
这个tsv文件转换为windows 7
下的CREATE TABLE ratings (distribution VARCHAR, votes VARCHAR, rank FLOAT, title VARCHAR);
?
感谢您的回复!
PS:我创建了具有正确值的表格,如:
C:/Users/testUser/Desktop/TSV/ratings.list.tsv
该文件位于以下目录中:
{{1}}
答案 0 :(得分:22)
你想要这样的东西:
COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER E'\t';
E'\t'
是必需的,否则您将收到如下错误:
错误:COPY的DELIMITER必须是单个单字节字符
如果您的TSV中的列与您的表格不完美对齐,您还可以通过执行以下操作来定义映射:
COPY ratings (column_1, column_2, ... column_n)
FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv'
DELIMITER E'\t';
答案 1 :(得分:13)
对于制表符分隔值,您可以使用COPY:
http://www.postgresql.org/docs/current/static/sql-copy.html
根据文件的确切格式,可能类似于:
COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER '\t'
答案 2 :(得分:2)
要读取TSV(或CSV)并将其创建/插入表格,我的命令行脚本如下所示:
csvsql --insert input.tsv --table table_t --tabs --no-constraints --db postgresql://user:passwd@localhost/mydb
答案 3 :(得分:1)
不幸的是,但最简单的方法是将TSV转换成CSV。大多数内置Postgres导入实用程序来执行诸如将空字符串转换为空值,跳过标题等操作仅适用于CSV 。
看到这个简单的6 line Python answer on SO。在尝试和小时加载TSV后,我使用它然后像普通一样加载CSV而没有问题。