2014-11-03 5 views
0

Я импортирую файл csv в postgres и хотел бы знать, как импортировать правильный тип данных, используя команду COPY. Например, у меня есть столбец column_1 integer; и хочу вставить в него значение 6 из моего файла csv.Коррекция данных Экспорт CSV-файла в Postgres

Выполняю команду copy "Table" from 'path/to/csv' DELIMITERS ',' CSV;, и каждый раз, когда я пытаюсь это сделать, я получаю ошибку ERROR: invalid input syntax for integer: "column_1". Я понял, что это потому, что он автоматически импортирует каждую часть данных из файла csv в виде строки или текста. Если я изменил тип столбца на text, он будет работать успешно, но это победит цель использования числа, поскольку оно мне нужно для различных вычислений. Есть ли способ сохранить тип данных при передаче? Есть ли что-то, что мне нужно изменить в файле csv? Или есть другой тип данных для назначения column_1? Надеюсь, это имеет смысл. Заранее спасибо!

+1

попробовать, как этот 'COPY«Table»от«путь/к/CSV»С CSV HEADER;' –

+0

Есть ли строка 'column_1' в колонке или только одна? – Houari

+0

У меня есть около 25 строк и 25 столбцов, заполненных данными, которые у меня уже есть в электронной таблице, и вы хотите просто скопировать и вставить всю информацию, а не вручную вводить каждую ячейку. Я также пробовал функцию заголовка, и у меня была такая же проблема. – Luminusss

ответ

0

Я сделал это, и она работала безупречно: я поставил обычный номер в stack.csv
(The stack.csv имеет только одно значение 6)

# create table stack(i int); 
# \copy stack from 'stack.csv' with (format csv); 

Я читал в вашем комментарии, что вам имеют 25 столбцов в вашем CSV-файле. Вы должны иметь по крайней мере 25 столбцов в таблице. Все столбцы должны отображаться из CSV. Если в таблице содержится более 25 столбцов, вам нужна карта только столбцов, сопоставленных с CSV. Именно поэтому он работает на поле text, потому что все данные помещаются в ячейку одной строки.

Если у вас есть несколько столбцов, «поля» в файле CSV, чем формат, как это

\copy stack(column1, column2, ..., column25) from 'stack.csv' with (format csv); 
+0

Что именно вы здесь делаете? Не могли бы вы объяснить, почему это другое? – Luminusss

+0

Я прочитал в вашем комментарии, что у вас есть 25 столбцов в вашем CSV-файле. Вы должны иметь по крайней мере 25 столбцов в таблице. Все столбцы должны отображаться из CSV. Если в таблице содержится более 25 столбцов, вам нужна карта только столбцов, сопоставленных с CSV. Если у вас есть **, **, то есть по умолчанию, поэтому я его пропустил. Другие вещи разные: я не ставил цитаты вокруг моей таблицы, и путь к вашему CSV-файлу неясен. Почему вы отказались от команды? –

Смежные вопросы