Error ошибка лишние данные после содержимого последнего столбца

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я прочитал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответы на StackOverflow, но я все еще не нашел виновника. Таблица создана успешно с 19 […]

Содержание

  1. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres
  2. «ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY
  3. 2 ответа
  4. Автоматизация
  5. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в PostgreSQL, в то время как количество столбцов такое же
  6. «ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY
  7. 2 ответы
  8. автоматизация
  9. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres

Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я прочитал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответы на StackOverflow, но я все еще не нашел виновника.

Таблица создана успешно с 19 различными столбцами. Затем я пытаюсь импортировать данные в новую таблицу.

И я получаю сообщение об ошибке. Я сделал следующее в CSV:

  • Убедитесь, что он сохранен как UTF-8 CSV (работает на Mac)
  • Уже вычистил все запятые в каждом ряду
  • Вычистил все значения NULL
  • Подтверждено, что все типы данных (целые, плавающие, текстовые и т. Д.) Верны
  • Я пытался просто скопировать только первый столбец, unitid ; это не удалось. Я попытался импортировать только второй столбец ( intsnm ), и он не удалось с той же ошибкой.

Полное сообщение об ошибке при попытке скопировать все 19 столбцов выглядит следующим образом:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid, intsnm, город, stabbr, zip_clean, контроль, широта, долгота, tutionfee_in, tuitionfee_out, pctpell, inc_pct _.

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 . «1 заявление не удалось.

Время выполнения: 0,03 с

Полное сообщение об ошибке при попытке скопировать только первый столбец:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid) FROM ‘/ Users / compose / Downloads / CollegeScorecard_Raw_Data x / MERGED2014_15_cleaned.csv’ CSV HEADER

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 . «1 заявление не удалось.

Источник

«ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY

Пожалуйста, подождите, это мой первый пост.

Я пытаюсь запустить команду COPY в PostgreSQL-9.2 для добавления таблицы с разделителями табуляции из файла .txt в базу данных PostgreSQL, например:

Я уже создал в базе данных пустую таблицу с именем «raw_data» с помощью команды SQL:

При попытке запустить команду COPY я получаю следующее сообщение об ошибке:

(Числа здесь должны быть заголовками столбцов)

Я не уверен, что это потому, что я не указывал столбцы таблицы при создании таблицы db, но я пытаюсь избежать необходимости вручную вводить 800 или столбцы.

Есть предложения, как это исправить?

Вот пример того, как выглядит файл .txt:

2 ответа

Пустой стол не годится. Вам нужна таблица, соответствующая структуре входных данных. Что-то вроде:

Вам не нужно объявлять tab как DELIMITER , поскольку это значение по умолчанию:

800 столбцов говорите? Такое количество столбцов обычно указывает на проблему с вашим дизайном. В любом случае, есть способы полуавтоматизировать скрипт CREATE TABLE .

Автоматизация

Предполагая упрощенные необработанные данные

Определите другой DELIMITER (тот, который вообще не встречается в данных импорта) и импортируйте во временную промежуточную таблицу с одним столбцом text :

Этот запрос создает скрипт CREATE TABLE :

Более общий и безопасный запрос:

Выполнить после проверки действительности — или выполнить динамически, если вы доверяете результату:

Затем INSERT данные с этим запросом:

Строка преобразуется в литерал строки, приводится к новому типу строки таблицы и разлагается с помощью (row).* .

Вы можете поместить все это в функцию plpgsql, но вам нужно будет защититься от SQL-инъекций. (Здесь, на SO, есть несколько связанных решений. Попробуйте поискать.

Источник

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в PostgreSQL, в то время как количество столбцов такое же

Я новичок в PostgreSQL, и мне нужно импортировать набор файлов csv, но некоторые из них не были успешно импортированы. У меня возникла такая же ошибка с этими файлами: ОШИБКА: дополнительные данные после последнего ожидаемого столбца . Я изучил этот отчет об ошибке и узнал, что эти ошибки могут возникать из-за того, что количество столбцов в таблице не равно количеству столбцов в файле. Но я не думаю, что нахожусь в такой ситуации.

Например, я создаю такую ​​таблицу:

И затем я хочу скопировать файл csv:

Затем я получил ошибку:

ОШИБКА: дополнительные данные после последнего ожидаемого столбца КОНТЕКСТ: COPY cast_info, строка 8801: «612,207,2222077,1,» (сегменты «Homies» — «Tilt A Whirl» — «Мы не умираем» — «Залы иллюзий . »

Полная строка в этом CSV-файле выглядит следующим образом:

612,207,2222077,1, »(сегменты« Homies »-« Tilt A Whirl »-« Мы не умираем »-« Halls of Illusions »-« Chicken Huntin »-« Еще одна песня о любви »-« Сколько раз? ») — «Шары для боулинга» — «Народ» — «Поросенок» — «Хокус покус» — «Пойдем до конца» — «Настоящая подпольная малышка») / Полный клип (отрывки «Дук да фук вниз» — » Настоящий подпольный ребенок ») / Гай Горфей (сегмент« Грубая сделка ») / Sugar Bear (сегмент« Настоящий андеграундный ребенок »)», 2,1

Как видите, в таблице ровно 7 столбцов.

Странно то, что я обнаружил, что строки ошибок всех этих файлов содержат символы обратной косой черты и кавычки ( «). Кроме того, эти строки — не единственная строка, содержащая » в файлах. Интересно, почему эта ошибка не появляется в других строках. Из-за этого я не уверен, что это проблема.

После изменения этих строк (например, замены «или удаления содержимого, оставив запятые), появляются новые ошибки: ОШИБКА: недопустимый синтаксис ввода для строки 2 каждого файла. И ошибки возникают из-за того, что данные в последнем столбце этих строк были добавлены три точки с запятой (;;;) без всякой причины.Но когда я открываю эти CSV-файлы, я не вижу трех точек с запятой в этих строках.

Например, после удаления содержимого пятого столбца этой строки:

У меня ошибка:
ОШИБКА: недопустимый синтаксис ввода для целого типа: «1 ;;;» КОНТЕКСТ: КОПИРОВАТЬ cast_info, строка 2, столбец role_id: «1 ;;;»

Хотя строка 2 не содержит трех точек с запятой, а именно:

В принципе, я надеюсь, что проблема может быть решена без изменения самих данных. Спасибо за терпение и помощь!

Источник

«ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY

Пожалуйста, потерпите меня, так как это мой первый пост.

Я пытаюсь запустить КОПИЯ Команда в PostgreSQL-9.2 для добавления таблицы с разделителями табуляции из файла .txt в базу данных PostgreSQL, например:

Я уже создал в базе данных пустую таблицу с именем «raw_data» с помощью команды SQL:

Я продолжаю получать следующее сообщение об ошибке при попытке запустить COPY команда:

(Цифры здесь должны быть заголовками столбцов)

Я не уверен, что это потому, что я не указал столбцы таблицы при создании таблицы БД, но я пытаюсь избежать необходимости вручную вводить 800 или столбцы.

Любые предложения по устранению этого?

Вот пример того, как выглядит файл .txt:

задан 03 мая ’13, 21:05

+1, кстати. Добро пожаловать в Stackoverflow, очень хороший вопрос для первого поста. — Erwin Brandstetter

2 ответы

Пустой стол не годится. Вам нужна таблица, соответствующая структуре входных данных. Что-то типа:

Вам не нужно декларировать tab as DELIMITER так как это по умолчанию:

800 колонок говоришь? Такое количество столбцов обычно указывает на проблему с вашим дизайном. В любом случае, есть способы полуавтоматизировать CREATE TABLE скрипты.

автоматизация

Предполагая упрощенные необработанные данные

Определите другой DELIMITER (тот, который вообще не встречается в данных импорта), и импортировать во временную промежуточную таблицу с одним text колонка:

Этот запрос создает CREATE TABLE сценарий:

Более общий и безопасный запрос:

Выполнить после проверки правильности или выполнить динамически, если вы доверяете результату:

Затем INSERT данные с этим запросом:

Строка преобразуется в литерал строки, приводится к новому типу строки таблицы и разлагается с помощью (row).* .

Вы можете поместить все это в функцию plpgsql, но вам нужно защититься от SQL-инъекций. (Здесь на SO есть ряд связанных решений. Попробуйте выполнить поиск.

Источник

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres

Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я читал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответов на StackOverflow, но до сих пор не нашел виновника.

Таблица успешно создана с 19 различными столбцами. Затем я пытаюсь импортировать данные в новую таблицу.

И я получаю сообщение об ошибке. В CSV я сделал следующее:

  • Убедитесь, что он сохранен как UTF-8 CSV (работает на Mac)
  • Уже вычищены все запятые в каждой строке
  • Убраны все значения NULL
  • Подтверждено, что все типы данных (целые числа, числа с плавающей запятой, текст и т. Д.) Верны
  • Я пытался просто КОПИРОВАТЬ только первый столбец unitid ,; это не удалось. Я пробовал импортировать только второй столбец ( intsnm ), и это не удалось с той же ошибкой.

Полное сообщение об ошибке при попытке КОПИРОВАТЬ по всем 19 столбцам выглядит следующим образом:

An error occurred when executing the SQL command: COPY colleges2014_15( unitid, intsnm, city, stabbr, zip_clean, control, latitude, longitude, tutionfee_in, tuitionfee_out, pctpell, inc_pct_.

ERROR: extra data after last expected column Where: COPY colleges2014_15, line 2: «100654,Alabama A & M University,Normal,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651. » 1 statement failed.

Полное сообщение об ошибке при попытке скопировать только первый столбец:

An error occurred when executing the SQL command: COPY colleges2014_15( unitid ) FROM ‘/Users/compose/Downloads/CollegeScorecard_Raw_Data x/MERGED2014_15_cleaned.csv’ CSV HEADER

ERROR: extra data after last expected column Where: COPY colleges2014_15, line 2: «100654,Alabama A & M University,Normal,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651. » 1 statement failed.

Источник

Содержание

  1. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres
  2. «ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY
  3. 2 ответа
  4. Автоматизация
  5. «ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY
  6. 2 ответы
  7. автоматизация
  8. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres
  9. ОШИБКА: дополнительные данные после последнего ожидаемого столбца в PostgreSQL, в то время как количество столбцов такое же

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres

Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я прочитал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответы на StackOverflow, но я все еще не нашел виновника.

Таблица создана успешно с 19 различными столбцами. Затем я пытаюсь импортировать данные в новую таблицу.

И я получаю сообщение об ошибке. Я сделал следующее в CSV:

  • Убедитесь, что он сохранен как UTF-8 CSV (работает на Mac)
  • Уже вычистил все запятые в каждом ряду
  • Вычистил все значения NULL
  • Подтверждено, что все типы данных (целые, плавающие, текстовые и т. Д.) Верны
  • Я пытался просто скопировать только первый столбец, unitid ; это не удалось. Я попытался импортировать только второй столбец ( intsnm ), и он не удалось с той же ошибкой.

Полное сообщение об ошибке при попытке скопировать все 19 столбцов выглядит следующим образом:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid, intsnm, город, stabbr, zip_clean, контроль, широта, долгота, tutionfee_in, tuitionfee_out, pctpell, inc_pct _.

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 . «1 заявление не удалось.

Время выполнения: 0,03 с

Полное сообщение об ошибке при попытке скопировать только первый столбец:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid) FROM ‘/ Users / compose / Downloads / CollegeScorecard_Raw_Data x / MERGED2014_15_cleaned.csv’ CSV HEADER

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 . «1 заявление не удалось.

Источник

«ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY

Пожалуйста, подождите, это мой первый пост.

Я пытаюсь запустить команду COPY в PostgreSQL-9.2 для добавления таблицы с разделителями табуляции из файла .txt в базу данных PostgreSQL, например:

Я уже создал в базе данных пустую таблицу с именем «raw_data» с помощью команды SQL:

При попытке запустить команду COPY я получаю следующее сообщение об ошибке:

(Числа здесь должны быть заголовками столбцов)

Я не уверен, что это потому, что я не указывал столбцы таблицы при создании таблицы db, но я пытаюсь избежать необходимости вручную вводить 800 или столбцы.

Есть предложения, как это исправить?

Вот пример того, как выглядит файл .txt:

2 ответа

Пустой стол не годится. Вам нужна таблица, соответствующая структуре входных данных. Что-то вроде:

Вам не нужно объявлять tab как DELIMITER , поскольку это значение по умолчанию:

800 столбцов говорите? Такое количество столбцов обычно указывает на проблему с вашим дизайном. В любом случае, есть способы полуавтоматизировать скрипт CREATE TABLE .

Автоматизация

Предполагая упрощенные необработанные данные

Определите другой DELIMITER (тот, который вообще не встречается в данных импорта) и импортируйте во временную промежуточную таблицу с одним столбцом text :

Этот запрос создает скрипт CREATE TABLE :

Более общий и безопасный запрос:

Выполнить после проверки действительности — или выполнить динамически, если вы доверяете результату:

Затем INSERT данные с этим запросом:

Строка преобразуется в литерал строки, приводится к новому типу строки таблицы и разлагается с помощью (row).* .

Вы можете поместить все это в функцию plpgsql, но вам нужно будет защититься от SQL-инъекций. (Здесь, на SO, есть несколько связанных решений. Попробуйте поискать.

Источник

«ОШИБКА: дополнительные данные после последнего ожидаемого столбца» при использовании PostgreSQL COPY

Пожалуйста, потерпите меня, так как это мой первый пост.

Я пытаюсь запустить КОПИЯ Команда в PostgreSQL-9.2 для добавления таблицы с разделителями табуляции из файла .txt в базу данных PostgreSQL, например:

Я уже создал в базе данных пустую таблицу с именем «raw_data» с помощью команды SQL:

Я продолжаю получать следующее сообщение об ошибке при попытке запустить COPY команда:

(Цифры здесь должны быть заголовками столбцов)

Я не уверен, что это потому, что я не указал столбцы таблицы при создании таблицы БД, но я пытаюсь избежать необходимости вручную вводить 800 или столбцы.

Любые предложения по устранению этого?

Вот пример того, как выглядит файл .txt:

задан 03 мая ’13, 21:05

+1, кстати. Добро пожаловать в Stackoverflow, очень хороший вопрос для первого поста. — Erwin Brandstetter

2 ответы

Пустой стол не годится. Вам нужна таблица, соответствующая структуре входных данных. Что-то типа:

Вам не нужно декларировать tab as DELIMITER так как это по умолчанию:

800 колонок говоришь? Такое количество столбцов обычно указывает на проблему с вашим дизайном. В любом случае, есть способы полуавтоматизировать CREATE TABLE скрипты.

автоматизация

Предполагая упрощенные необработанные данные

Определите другой DELIMITER (тот, который вообще не встречается в данных импорта), и импортировать во временную промежуточную таблицу с одним text колонка:

Этот запрос создает CREATE TABLE сценарий:

Более общий и безопасный запрос:

Выполнить после проверки правильности или выполнить динамически, если вы доверяете результату:

Затем INSERT данные с этим запросом:

Строка преобразуется в литерал строки, приводится к новому типу строки таблицы и разлагается с помощью (row).* .

Вы можете поместить все это в функцию plpgsql, но вам нужно защититься от SQL-инъекций. (Здесь на SO есть ряд связанных решений. Попробуйте выполнить поиск.

Источник

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в таблице postgres

Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я читал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответов на StackOverflow, но до сих пор не нашел виновника.

Таблица успешно создана с 19 различными столбцами. Затем я пытаюсь импортировать данные в новую таблицу.

И я получаю сообщение об ошибке. В CSV я сделал следующее:

  • Убедитесь, что он сохранен как UTF-8 CSV (работает на Mac)
  • Уже вычищены все запятые в каждой строке
  • Убраны все значения NULL
  • Подтверждено, что все типы данных (целые числа, числа с плавающей запятой, текст и т. Д.) Верны
  • Я пытался просто КОПИРОВАТЬ только первый столбец unitid ,; это не удалось. Я пробовал импортировать только второй столбец ( intsnm ), и это не удалось с той же ошибкой.

Полное сообщение об ошибке при попытке КОПИРОВАТЬ по всем 19 столбцам выглядит следующим образом:

An error occurred when executing the SQL command: COPY colleges2014_15( unitid, intsnm, city, stabbr, zip_clean, control, latitude, longitude, tutionfee_in, tuitionfee_out, pctpell, inc_pct_.

ERROR: extra data after last expected column Where: COPY colleges2014_15, line 2: «100654,Alabama A & M University,Normal,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651. » 1 statement failed.

Полное сообщение об ошибке при попытке скопировать только первый столбец:

An error occurred when executing the SQL command: COPY colleges2014_15( unitid ) FROM ‘/Users/compose/Downloads/CollegeScorecard_Raw_Data x/MERGED2014_15_cleaned.csv’ CSV HEADER

ERROR: extra data after last expected column Where: COPY colleges2014_15, line 2: «100654,Alabama A & M University,Normal,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651. » 1 statement failed.

Источник

ОШИБКА: дополнительные данные после последнего ожидаемого столбца в PostgreSQL, в то время как количество столбцов такое же

Я новичок в PostgreSQL, и мне нужно импортировать набор файлов csv, но некоторые из них не были успешно импортированы. У меня возникла такая же ошибка с этими файлами: ОШИБКА: дополнительные данные после последнего ожидаемого столбца . Я изучил этот отчет об ошибке и узнал, что эти ошибки могут возникать из-за того, что количество столбцов в таблице не равно количеству столбцов в файле. Но я не думаю, что нахожусь в такой ситуации.

Например, я создаю такую ​​таблицу:

И затем я хочу скопировать файл csv:

Затем я получил ошибку:

ОШИБКА: дополнительные данные после последнего ожидаемого столбца КОНТЕКСТ: COPY cast_info, строка 8801: «612,207,2222077,1,» (сегменты «Homies» — «Tilt A Whirl» — «Мы не умираем» — «Залы иллюзий . »

Полная строка в этом CSV-файле выглядит следующим образом:

612,207,2222077,1, »(сегменты« Homies »-« Tilt A Whirl »-« Мы не умираем »-« Halls of Illusions »-« Chicken Huntin »-« Еще одна песня о любви »-« Сколько раз? ») — «Шары для боулинга» — «Народ» — «Поросенок» — «Хокус покус» — «Пойдем до конца» — «Настоящая подпольная малышка») / Полный клип (отрывки «Дук да фук вниз» — » Настоящий подпольный ребенок ») / Гай Горфей (сегмент« Грубая сделка ») / Sugar Bear (сегмент« Настоящий андеграундный ребенок »)», 2,1

Как видите, в таблице ровно 7 столбцов.

Странно то, что я обнаружил, что строки ошибок всех этих файлов содержат символы обратной косой черты и кавычки ( «). Кроме того, эти строки — не единственная строка, содержащая » в файлах. Интересно, почему эта ошибка не появляется в других строках. Из-за этого я не уверен, что это проблема.

После изменения этих строк (например, замены «или удаления содержимого, оставив запятые), появляются новые ошибки: ОШИБКА: недопустимый синтаксис ввода для строки 2 каждого файла. И ошибки возникают из-за того, что данные в последнем столбце этих строк были добавлены три точки с запятой (;;;) без всякой причины.Но когда я открываю эти CSV-файлы, я не вижу трех точек с запятой в этих строках.

Например, после удаления содержимого пятого столбца этой строки:

У меня ошибка:
ОШИБКА: недопустимый синтаксис ввода для целого типа: «1 ;;;» КОНТЕКСТ: КОПИРОВАТЬ cast_info, строка 2, столбец role_id: «1 ;;;»

Хотя строка 2 не содержит трех точек с запятой, а именно:

В принципе, я надеюсь, что проблема может быть решена без изменения самих данных. Спасибо за терпение и помощь!

Источник

Я работаю над проектом, в котором мне нужно создать новую таблицу, а затем импортировать данные из CSV. Я прочитал много похожих вопросов («дополнительные данные после последнего ожидаемого столбца») и ответы на StackOverflow, но я все еще не нашел виновника.

CREATE TABLE colleges2014_15 (
unitid integer, 
intsnm text, 
city text, 
stabbr text, 
zip_clean char, 
control integer, 
latitude float, 
longitude float, 
tutionfee_in float, 
tuitionfee_out float, 
pctpell float,
inc_pct_lo float, 
dep_stat_pct_ind float, 
dep_debt_mdn float, 
ind_debt_mdn float, 
pell_debt_mdn float,
ugds_men float, 
ubds_women float, 
locale integer, 
PRIMARY KEY(unitid)
);

Таблица создана успешно с 19 различными столбцами. Затем я пытаюсь импортировать данные в новую таблицу.

COPY colleges2014_15(
unitid, 
intsnm, 
city, 
stabbr, 
zip_clean, 
control, 
latitude, 
longitude, 
tutionfee_in, 
tuitionfee_out, 
pctpell,
inc_pct_lo, 
dep_stat_pct_ind, 
dep_debt_mdn, 
ind_debt_mdn, 
pell_debt_mdn, 
ugds_men, 
ubds_women, 
locale
)
FROM '/Users/compose/Downloads/CollegeScorecard_Raw_Data x/MERGED2014_15_cleaned.csv' CSV HEADER
;

И я получаю сообщение об ошибке. Я сделал следующее в CSV:

  • Убедитесь, что он сохранен как UTF-8 CSV (работает на Mac)
  • Уже вычистил все запятые в каждом ряду
  • Вычистил все значения NULL
  • Подтверждено, что все типы данных (целые, плавающие, текстовые и т. Д.) Верны
  • Я пытался просто скопировать только первый столбец, unitid; это не удалось. Я попытался импортировать только второй столбец (intsnm), и он не удалось с той же ошибкой.

Полное сообщение об ошибке при попытке скопировать все 19 столбцов выглядит следующим образом:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid, intsnm, город, stabbr, zip_clean, контроль, широта, долгота, tutionfee_in, tuitionfee_out, pctpell, inc_pct _…

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 … «1 заявление не удалось.

Время выполнения: 0,03 с

Полное сообщение об ошибке при попытке скопировать только первый столбец:

Произошла ошибка при выполнении команды SQL: COPY colleges2014_15 (unitid) FROM ‘/ Users / compose / Downloads / CollegeScorecard_Raw_Data x / MERGED2014_15_cleaned.csv’ CSV HEADER

ОШИБКА: дополнительные данные после последнего ожидаемого столбца Где: COPY colleges2014_15, строка 2: «100654, Alabama A & M University, Normal, AL, 35762,35762,1,34.783368, -86.568502,9096,16596,0,7356,0,651 … «1 заявление не удалось.

Время выполнения: 0,01 с

Огромная благодарность за любую помощь.

Мне потребовалось некоторое время, чтобы выяснить, что было неправильно при поиске ошибки, поэтому разместил мою проблему, чтобы помочь другим. Моя проблема заключалась в неопытности с pgAdmin, так как pgAdmin требует, чтобы таблица создавалась в столбцах WITH до импорта данных. Я ожидал, что заголовки будут использоваться из файла .csv, большинство других пакетов, которые я использовал, работали таким образом.

Если вы работаете с ГИС-системой, использующей PostGIS, есть простое решение. Я использую QGIS 3.4, с установленными Postgres и PostGIS.

В QGIS
Выберите пункт меню «База данных»
Выберите DBManager
Слева — выберите место для стола Выберите Импорт слоя / файла В следующем окне выберите следующее
Ввод — выберите файл
Таблица — введите имя таблицы
хорошо

15.12.2019, 19:20. Показов 4307. Ответов 0


Здравствуйте, возникла проблема с импортом данных из csv файла в таблицу базы данных postgresql.

Код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import csv
import psycopg2
with open('data.csv', 'rt',
               encoding='utf-8', newline="") as fin, open("test.csv", "w", encoding='utf-8', newline="") as fout:
    reader = csv.reader(fin, delimiter=';', quotechar='"')
    writer = csv.writer(fout, delimiter=';', quotechar='"')
    #пропуск 7 строк (включая заголовки столбцов)
    for _ in range(7):
       next(reader)
    for row in reader:
    #    writer.writerow(row[:len(row)-2])
    
fin.close()
    fout.close()
 
conn = psycopg2.connect(dbname='meteo_db', user='postgres',
                        password='postgres',host='localhost')
cur = conn.cursor()
with open(r'test.csv', 'r', encoding='utf-8', newline="") as f:
    cur.copy_from(f, 'test_tomsk', sep=';', null='')
    conn.commit()
    f.close()
cur.execute('SELECT * FROM test_tomsk')
for row in cur:
    print(row)
cur.close()
conn.close()

Структура таблицы:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE TABLE public.test_tomsk
(
    "Datetime" TIMESTAMP WITHOUT TIME zone NOT NULL,
    "T" REAL,
    "P0" REAL,
    "P" REAL,
    "Pa" REAL,
    "U" SMALLINT,
    "DD" CHARACTER VARYING,
    "FF" SMALLINT,
    "FF10" SMALLINT,
    "FF3" SMALLINT,
    "N" CHARACTER VARYING,
    "WW" CHARACTER VARYING,
    "W1" CHARACTER VARYING,
    "W2" CHARACTER VARYING,
    "Tn" REAL,
    "Tx" REAL,
    "Cl" CHARACTER VARYING,
    "Nh" CHARACTER VARYING,
    "H" CHARACTER VARYING,
    "Cm" CHARACTER VARYING,
    "Ch" CHARACTER VARYING,
    "VV" REAL,
    "Td" REAL,
    "RRR" CHARACTER VARYING,
    "tR" SMALLINT,
    "E" CHARACTER VARYING,
    "Tg" REAL,
    "E_" CHARACTER VARYING,
    "SSS" CHARACTER VARYING,
    CONSTRAINT test_tomsk_pkey PRIMARY KEY ("Datetime")
)

Добавлено через 8 минут
Здравствуйте, возникла проблема с импортом данных из csv файла в таблицу базы данных postgresql. Если запустить этот код , то получаю ошибку: psycopg2.errors.BadCopyFileFormat: ОШИБКА: лишние данные после содержимого последнего столбца
CONTEXT: COPY test_tomsk, строка 1: «13.12.2019 22:00;-5.2;746.8;760.2;0.8;84;Ветер, дующий с западо-северо-за…»

Код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import csv
import psycopg2
with open('data.csv', 'rt',
               encoding='utf-8', newline="") as fin, open("test.csv", "w", encoding='utf-8', newline="") as fout:
    reader = csv.reader(fin, delimiter=';', quotechar='"')
    writer = csv.writer(fout, delimiter=';', quotechar='"')
    #пропуск 7 строк (включая заголовки столбцов)
    for _ in range(7):
       next(reader)
    for row in reader:
        writer.writerow(row)
        #writer.writerow(row[:len(row)-2])
    fin.close()
    fout.close()
 
conn = psycopg2.connect(dbname='meteo_db', user='postgres',
                        password='postgres',host='localhost')
cur = conn.cursor()
with open(r'test.csv', 'r', encoding='utf-8', newline="") as f:
    cur.copy_from(f, 'test_tomsk', sep=';', null='')
    conn.commit()
    f.close()
cur.execute('SELECT * FROM test_tomsk')
for row in cur:
    print(row)
cur.close()
conn.close()

Если же закомментировать 11 строку, а 12 раскомментировать, то получаю ошибку: psycopg2.errors.BadCopyFileFormat: ОШИБКА: нет данных для столбца «SSS»
CONTEXT: COPY test_tomsk, строка 1: «13.12.2019 22:00;-5.2;746.8;760.2;0.8;84;Ветер, дующий с западо-северо-за…»

В чем причина не могу понять. Csv-шник во вложении.

Структура таблицы БД следующая:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE TABLE test_tomsk
(
    "Datetime" TIMESTAMP WITHOUT TIME zone NOT NULL,
    "T" REAL,
    "P0" REAL,
    "P" REAL,
    "Pa" REAL,
    "U" SMALLINT,
    "DD" CHARACTER VARYING,
    "FF" SMALLINT,
    "FF10" SMALLINT,
    "FF3" SMALLINT,
    "N" CHARACTER VARYING,
    "WW" CHARACTER VARYING,
    "W1" CHARACTER VARYING,
    "W2" CHARACTER VARYING,
    "Tn" REAL,
    "Tx" REAL,
    "Cl" CHARACTER VARYING,
    "Nh" CHARACTER VARYING,
    "H" CHARACTER VARYING,
    "Cm" CHARACTER VARYING,
    "Ch" CHARACTER VARYING,
    "VV" REAL,
    "Td" REAL,
    "RRR" CHARACTER VARYING,
    "tR" SMALLINT,
    "E" CHARACTER VARYING,
    "Tg" REAL,
    "E_" CHARACTER VARYING,
    "SSS" CHARACTER VARYING,
    CONSTRAINT test_tomsk_pkey PRIMARY KEY ("Datetime")
)

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Понравилась статья? Поделить с друзьями:
  • Error ошибка инициализации графического устройства ок
  • Error ошибка insert содержит больше выражений чем целевых столбцов
  • Error ошибка 201 невыполнение запроса рабочие места орион про
  • Error обмен не найден
  • Error ник красиво