Как загрузить данные из текстового файла в базу данных PostgreSQL? - PullRequest
19 голосов
/ 08 марта 2011

У меня есть файл типа (файл CSV):

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

и хотел бы загрузить эти данные в таблицу postgresql.

Ответы [ 4 ]

16 голосов
/ 28 октября 2014

Немного измененная версия COPY ниже работала для меня лучше, где я определяю формат CSV.Этот формат обрабатывает символы обратной косой черты в тексте без суеты.Формат по умолчанию является несколько странным TEXT.

COPY myTable FROM '/path/to/file/on/server' ( FORMAT CSV, DELIMITER('|') );
14 голосов
/ 26 января 2014

Предположим, что ваши данные находятся в файле values.txt и вы хотите импортировать их в таблицу базы данных myTable, тогда следующий запрос сделает работу

COPY myTable FROM 'value.txt' (DELIMITER('|'));

https://www.postgresql.org/docs/current/static/sql-copy.html

5 голосов
/ 08 марта 2011

Проверьте команду COPY Postgres:

http://www.postgresql.org/docs/current/static/sql-copy.html

2 голосов
/ 16 мая 2017

Существует Pgloader , который использует вышеупомянутую команду COPY и может загружать данные из csv (и MySQL, SQLite и dBase). Он также использует отдельные потоки для чтения и копирования данных, поэтому он довольно быстрый (что интересно, он был написан с Python на Common Lisp и получил увеличение скорости в 20–30 раз, см. сообщение в блоге ).

Для загрузки файла CSV необходимо написать небольшой файл конфигурации, например

LOAD CSV  
  FROM 'path/to/file.csv' (x, y, a, b, c, d)  
  INTO postgresql:///pgloader?csv (a, b, d, c)  
  …
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...