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

Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице, включая первичный ключ в неволе

Я пытаюсь импортировать плоский файл в базу данных целевого сервера sql-сервера oledb.

здесь поле, которое дает мне проблемы:

enter image description here

Вот свойства этого соединения с плоским файлом, в частности поле:

enter image description here

вот сообщение об ошибке:

[Источник - 18942979103_txt [424]] Ошибка: сбой передачи данных. преобразование данных для столбца "имя получателя" возвращаемое значение статуса 4 и текст статуса "Текст был усечен или один или несколько символов не имели соответствие на целевой кодовой странице.".

Что я делаю неправильно?

4b9b3361

Ответ 1

Я знаю, что это старый вопрос. Способ, которым я решил это - после неудачи, увеличив длину или даже изменив текст типа данных, создал файл xlsx и импортировал его. Он точно обнаружил тип данных вместо того, чтобы устанавливать все столбцы как varchar (50). Выключает nvharchar (255), чтобы этот столбец тоже сделал это.

Ответ 2

Вот что поставило проблему для меня. Мне не нужно было конвертировать в Excel. Просто изменил DataType при выборе источника данных на "текстовый поток" (рис. 1). Вы также можете проверить диалоговое окно "Редактировать сопоставление", чтобы проверить изменение размера (рисунок 2).

Рисунок 1

введите описание изображения здесь

Рисунок 2

введите описание изображения здесь

Ответ 3

Я решил эту проблему, ЗАКАЗЫВАЯ мои исходные данные (xls, csv, что угодно), такие, что самые длинные текстовые значения находятся в верхней части файла. Excel замечательный. используйте функцию LEN() в своей сложной колонке. Заказывайте значение этой длины с самым длинным значением в верхней части вашего набора данных. Сохранить. Повторите попытку импорта.

Ответ 4

SQL Server может предложить правильный тип данных для вас (даже если он по умолчанию не выбирает правильный тип) - нажатие кнопки "Предложить типы" (показано на скриншоте выше) позволяет вам иметь SQL Server сканируйте источник и предложите тип данных для поля, которое выдает ошибку. В моем случае, выбрав для сканирования 20000 строк для создания предложений и использования результирующего предложенного типа данных, исправлена ​​проблема.

Ответ 5

Импорт данных SQl Management Studio просматривает первые несколько строк для определения спецификаций исходных данных.

сдвиньте свои записи так, чтобы самый длинный текст был наверху.

Ответ 6

У меня была похожая проблема с двумя разными базами данных (DB2 и SQL), и наконец я решил ее, используя CAST в исходном запросе от DB2. Я также использую запрос, адаптируя исходный столбец к varchar и избегая ненужных пробелов:

CAST(RTRIM(LTRIM(COLUMN_NAME)) AS VARCHAR(60) CCSID UNICODE 
   FOR SBCS DATA)  COLUMN_NAME

Важным вопросом здесь является преобразование CCSID.

Ответ 7

В то время как подход, предложенный выше (@chookoos, здесь, в этом д и с обращенным в книги Excel) и импорта решает эти виды вопросов, это решение это решение в другом д & а отлично подходит, потому что вы можете остаться с CSV или TSV или текстовый файл, и perfom необходимая тонкая настройка без создания решения Microsoft, связанного с продуктом enter image description here enter image description here

Ответ 8

Не совсем техническое решение, но импорт плоских файлов в SQL Server 2017 полностью обновлен, и я импортировал мой крупноформатный файл с 5 щелчками мыши, обработал проблемы с кодированием/длиной поля без какого-либо участия со стороны меня

enter image description here

Ответ 9

Я решил это, установив флажок "UNICODE". Нажмите на ссылку ниже изображения:

Image


Ответ 10

Ничто из этого не помогло мне. Я РЕШИЛ свою проблему, сохранив исходные данные (сохраните как) файл Excel как один рабочий лист xls Excel 5.0/95 и импортированный без заголовков столбцов. Кроме того, я создал таблицу заранее и сопоставил вручную, а не позволял SQL создавать таблицу.

Ответ 11

Обычно это происходит из-за того, что в диспетчере соединений он по-прежнему составляет 50 символов, поэтому я решил проблему, перейдя в раздел "Соединение Manager--> Дополнительно" и затем изменив значение на 100 или на 1000, если оно достаточно большое