kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 zoe
zoe
Вопрос

Ошибка преобразования данных объемной загрузки (несоответствие типа или недопустимый символ для указанной кодовой страницы) для строки 1, столбца 4 (Год)

Я'получаю ошибку преобразования, когда пытаюсь импортировать текстовый файл в свою базу данных. Ниже приведено сообщение об ошибке, которое я получил:

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 4 (Year).

Вот код моего запроса:

CREATE TABLE Students
(
    StudentNo    Integer NOT NULL Primary Key,
    FirstName    VARCHAR(40) NOT NULL,
    LastName     VARCHAR(40) NOT NULL,
    Year         Integer,
    GPA          Float NULL
);

Вот пример данных из текстового файла:

100,Christoph,Van Gerwen,2011
101,Anar,Cooke,2011
102,Douglis,Rudinow,2008

Я думаю, что знаю, в чем проблема. Ниже приведен мой код массовой вставки:

use xta9354
bulk insert xta9354.dbo.Students
from 'd:\userdata\xta9_Students.txt' 
with (fieldterminator = ',',rowterminator = '\n') 

В данных примера нет ',' после атрибута Year, хотя после Year есть еще один атрибут Grade, который является NULL.

Кто-нибудь может подсказать, как это исправить?

18 2012-10-24T20:11:49+00:00 3
 abatishchev
abatishchev
Редактировал вопрос 24-го октября 2012 в 8:56
Программирование
sql
sql-server
tsql
Этот вопрос имеет 1 ответ на английском, чтобы прочитать их войдите в свой аккаунт.
Решение / Ответ
 Kermit
Kermit
24-го октября 2012 в 8:54
2012-10-24T20:54:25+00:00
Дополнительно
Источник
Редактировать
#17549846

Попробуйте использовать форматный файл, поскольку ваш файл данных имеет только 4 столбца. В противном случае попробуйте OPENROWSET или используйте промежуточную таблицу.

myTestFormatFiles.Fmt может выглядеть следующим образом:

9.0
4
1 SQLINT 0 3 "," 1 StudentNo ""
2 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
4 SQLINT 0 4 "\r\n" 4 Год "

(source: microsoft.com)

Этот учебник о пропуске столбца с помощью BULK INSERT также может помочь.

Тогда ваше утверждение будет выглядеть следующим образом:

USE xta9354
GO
BULK INSERT xta9354.dbo.Students
    FROM 'd:\userdata\xta9_Students.txt' 
    WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt')
 Glorfindel
Glorfindel
Редактировал ответ 26-го августа 2019 в 3:31
20
0
 Roger
Roger
18-го августа 2016 в 4:10
2016-08-18T16:10:25+00:00
Дополнительно
Источник
Редактировать
#17549847

В моем случае я имел дело с файлом, который был сгенерирован hadoop на linux box. Когда я попытался импортировать его в sql, у меня возникла эта проблема. Исправлением оказалось использование шестнадцатеричного значения для 'line feed' 0x0a. Это также сработало при массовой вставке

bulk insert table from 'file' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '0x0a')
8
0
Ratnesh Sharma
Ratnesh Sharma
1-го мая 2018 в 6:47
2018-05-01T06:47:55+00:00
Дополнительно
Источник
Редактировать
#17549848

Приведенные выше варианты работают и для большого файла запросов Google. Я экспортировал данные таблицы в облачное хранилище Goodle и загрузил их оттуда. При загрузке в sql-сервер возникла эта проблема, и я смог успешно загрузить файл, указав разделитель строк как

ROWTERMINATOR = '0x0a' 

Обратите внимание также на запись заголовка и укажите

FIRSTROW = 2

Мой финальный блок для экспорта файла данных из google bigquery выглядит следующим образом.

BULK INSERT TABLENAME
        FROM 'C:\ETL\Data\BigQuery\In\FILENAME.csv'
        WITH
        (
         FIRSTROW = 2,
         FIELDTERMINATOR = ',',  --CSV field delimiter
         ROWTERMINATOR = '0x0a',--Files are generated with this row terminator in Google Bigquery
         TABLOCK
        )
1
0
Похожие сообщества 4
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
3 542 пользователей
Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.
Открыть telegram
sql_ninja
sql_ninja
2 520 пользователей
Канал для тех, кто знает или интересуется SQL 🛢 Взаимная помощь и позитив =) Вакансии тут - @sql_jobs Бан за: оскорбления, спам, фри рекламу, расизм, сексизм. Наш MSSQL канал - @sqlcom По рекламе: @aveLestat
Открыть telegram
SQL JOBS
SQL JOBS
2 144 пользователей
Обязательны: компания, город, позиция, вилка, наличие удалёнки, требования, контакты. Бан за рекламу, сексизм, расизм и неадекватный обсёр объявлений
Открыть telegram
Lazarus : Database (Firebird, mySQL, SQLite, PostgreSQL, ...)
29 пользователей
Базы данных в Lazarus https://t.me/Delphi_Lazarus (по-русски) https://t.me/Delphi_Lazarus_offtop https://t.me/freepascal_en (по-английски) по темам: https://t.me/Lazarus_Database https://t.me/Lazarus_Graphics https://t.me/Lazarus_Android
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 2 дня назад
2
Денис Васьков
Зарегистрирован 3 дня назад
3
Dima Patrushev
Зарегистрирован 6 дней назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
ID
JA
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией