如何从PostgreSQL数据库中的文本文件加载数据?

时间:2011-03-08 13:45:31

标签: database postgresql csv

我有一个像(CSV文件)的文件:

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

并希望将这些数据加载到postgresql表中。

5 个答案:

答案 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)

答案 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 ' ');