我有一个像(CSV文件)的文件:
value1|value2|value2....
value1|value2|value2....
value1|value2|value2....
value1|value2|value2....
并希望将这些数据加载到postgresql表中。
答案 0 :(得分:15)
以下COPY
的略微修改版本对我来说效果更好,我指定了CSV
格式。这种格式可以毫不费力地处理文本中的反斜杠字符。默认格式有点古怪TEXT
。
COPY myTable FROM '/path/to/file/on/server' ( FORMAT CSV, DELIMITER('|') );
答案 1 :(得分:14)
考虑您的数据位于文件values.txt
中并且您要将它们导入数据库表myTable
,然后以下查询执行该作业
COPY myTable FROM 'value.txt' (DELIMITER('|'));
https://www.postgresql.org/docs/current/static/sql-copy.html
答案 2 :(得分:5)
查看Postgres的COPY命令:
答案 3 :(得分:2)
有Pgloader使用上述COPY
命令,可以从csv(以及MySQL,SQLite和dBase)加载数据。它也使用单独的线程来读取和复制数据,所以它非常快(有趣的是,它从Python编写到Common Lisp并获得20到30倍的速度增益,请参阅blog post )。
要加载csv文件,需要编写一个小配置文件,如
LOAD CSV
FROM 'path/to/file.csv' (x, y, a, b, c, d)
INTO postgresql:///pgloader?csv (a, b, d, c)
…
答案 4 :(得分:0)
COPY description_f (id, name) FROM 'absolutepath\test.txt' WITH (FORMAT csv, HEADER true, DELIMITER ' ');
Example
COPY description_f (id, name) FROM 'D:\HIVEWORX\COMMON\TermServerAssets\Snomed2021\SnomedCT\Full\Terminology\sct2_Description_Full_INT_20210131.txt' WITH (FORMAT csv, HEADER true, DELIMITER ' ');