Как загрузить данные из текстового файла в базе данных PostgreSQL?
У меня есть файл (CSV файл):
value1|value2|value2....
value1|value2|value2....
value1|value2|value2....
value1|value2|value2....
и хотел бы загрузить эти данные в таблицу postgresql.
Ответы
Ответ 1
Немного измененная версия COPY
ниже работала лучше для меня, где я указываю CSV
. Этот формат обрабатывает символы обратной косой черты в тексте без каких-либо проблем. Формат по умолчанию - несколько причудливый TEXT
.
COPY myTable FROM '/path/to/file/on/server' ( FORMAT CSV, DELIMITER('|') );
Ответ 2
Учтите, что ваши данные находятся в файле values.txt
и что вы хотите импортировать их в таблицу базы данных myTable
, тогда следующий запрос выполняет задание
COPY myTable FROM 'value.txt' (DELIMITER('|'));
https://www.postgresql.org/docs/current/static/sql-copy.html
Ответ 3
Проверьте команду COPY Postgres:
http://www.postgresql.org/docs/current/static/sql-copy.html
Ответ 4
Здесь 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)
…