шестнадцатеричное значение в поле / конце строки для массовой вставки - PullRequest
1 голос
/ 23 марта 2010

Я использую SQL Server 2005 Express. И я пытаюсь выполнить массовую вставку / импорт файла данных с полем / строкой, который использует шестнадцатеричное значение 0x001. Как мне представить его в команде массовой вставки?

У меня есть что-то вроде:

bulk insert xxx.dbo.[yyy]
from 'D:\zzz\zzz.dat'
with (
         CODEPAGE='RAW',
         FIELDTERMINATOR = '=|=',
         ROWTERMINATOR = '=|=\001\n',
         KEEPNULLS
); 

, что приводит к

Msg 4863, Level 16, State 1, Line 7
Bulk load data conversion error (truncation) for row 1, column 3 (code).

Столбец 3 - последний столбец. А удаление шестнадцатеричного значения из строки позволяет правильно загрузить его в SQL Server, однако я хочу знать, возможно ли представить / использовать шестнадцатеричное значение в терминаторе.

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Нет, это не так. Это фактическое шестнадцатеричное значение 0x001. Ответ заключается в том, чтобы использовать преобразователь из шестнадцатеричной строки в строку, чтобы получить буквенный символ, и использовать буквально забавный символ в строке для ROWTERMINATOR.

0 голосов
/ 23 марта 2010
ROWTERMINATOR = '=|=01\n'

Предполагается, что файл выглядит так с фактической строкой "01"

foo=/=bar=/=bob=/=01

В противном случае, если это буквальный символ (1), вы не сможете: Задать поле иТерминаторы строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...