Вставка файлов " tsv " в базу данных postgresql
У меня есть несколько файлов, которые сохраняются как tsv. Я хочу вставить их в БД postgresql
, чтобы проанализировать их с помощью sql.
Однако, моя проблема заключается в том, как INSERT
Этот tsv файлы в postgresql 9.2
под windows 7
?
Я ценю ваш ответ!
ПС.: Я создал таблицу с правильными значениями, такими как:
CREATE TABLE ratings (distribution VARCHAR, votes VARCHAR, rank FLOAT, title VARCHAR);
Файл находится в каталоге:
C:/Users/testUser/Desktop/TSV/ratings.list.tsv
4 ответа:
Для значений, разделенных табуляцией, можно использовать COPY:
Http://www.postgresql.org/docs/current/static/sql-copy.html
В зависимости от точного формата вашего файла, это может быть что-то вроде:
COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER '\t'
Вы хотите что-то вроде этого:
COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER E'\t';
Требуется
E'\t'
, иначе вы получите такую ошибку:Ошибка: разделителем для копирования должен быть один однобайтовый символ
Если столбцы в вашем TSV не совпадают идеально с вашей таблицей, вы также можете определить отображение, выполнив следующее:
COPY ratings (column_1, column_2, ... column_n) FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER E'\t';
Грустно говорить,но самый простой способ-преобразовать TSV в CSV. Большинство встроенных утилит импорта Postgres для таких вещей, как преобразование пустых строк в нули, пропуск заголовков и т. д., предназначены только для CSV.
Эта простая 6 строки питона ответа на так. Я использую его, а затем CSV загружается как обычно без проблем в Postgres после попытки в течение часа загрузить TSV.