Подтвердить что ты не робот

Вставьте файлы `tsv` в postgresql db

У меня есть несколько файлов, которые сохраняются как tsv. Я хочу вставить их в db postgresql, чтобы проанализировать их с помощью sql.

Однако моя проблема заключается в том, как INSERT этот tsv файл в postgresql 9.2 в windows 7?

Я ценю ваш ответ!

PS: Я создал таблицу с правильными значениями, например:

CREATE TABLE ratings (distribution VARCHAR, votes VARCHAR, rank FLOAT, title VARCHAR);

файл находится в каталоге:

C:/Users/testUser/Desktop/TSV/ratings.list.tsv

4b9b3361

Ответ 1

Для значений, разделенных вкладкой, вы можете использовать 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

Вы хотите что-то вроде этого:

COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER E'\t';

Требуется E'\t', иначе вы получите сообщение об ошибке:

ОШИБКА: DELIMITER для COPY должен быть одним однобайтовым символом


Если столбцы вашего TSV не соответствуют вашей таблице, вы также можете определить отображение, выполнив следующие действия:

COPY ratings (column_1, column_2, ... column_n)
  FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv'
  DELIMITER E'\t';

Ответ 3

Скажем, но самый простой способ - преобразовать TSV в CSV. Большинство встроенных утилит импорта Postgres, чтобы делать такие вещи, как преобразование пустых строк в нули, пропуски заголовков и т.д., Только для CSV.

Посмотрите этот простой 6-строчный ответ Python на SO. Я использую его, а затем CSV загружается, как обычно, без проблем в Postgres после попытки и часа для загрузки TSV.

Ответ 4

Я могу сделать это с помощью csvsql из csvkit.

Чтобы прочитать TSV (или CSV) и создать/вставить его в таблицу, моя командная строка script выглядит так:

csvsql --insert input.tsv  --table table_t --tabs --no-constraints --db postgresql://user:[email protected]/mydb