SQL Массовая вставка - ROWTERMINATOR 'Ox0A' vs '\ r \ n' - PullRequest
0 голосов
/ 04 мая 2020

Я пишу работу SQL, чтобы заменить старую устаревшую обработку. По сути, он читает текстовый файл, выполняет некоторые манипуляции с данными, а затем выполняет оператор обновления. Довольно просто Однако у меня возникла проблема с BULK INSERT, и я не совсем понимаю разрешение, поэтому я хотел опубликовать его здесь.

Заявление BULK INSERT, которое я писал, было следующим:

-- Insert statements for procedure here
BULK INSERT [SomeTableName] FROM '\\FILE_PATH_HERE\test.txt'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '0x0a'--'\r\n'
);

Когда я запустил исходное утверждение с ROWTERMINATOR '\ r \ n', в моей таблице не было данных. Когда я заменил '\ r \ n' на 'OxOa', моя массовая вставка сработала.

Причина, по которой я не уверен, почему это работает, заключается в том, что при просмотре файла в Notepad ++ с помощью View-> Symbols-> Show all символы, я вижу CRLF в конце каждой строки данных. Я думал, что '\ r \ n' был эквивалентом перевода строки каретки (CRLF), но он не работал. Я думал, что 'Oxoa' представляет собой только '\ n', поэтому я немного не уверен, почему смена ROWTERMINATOR с '\ r \ n' на '0x0a' сработала.

Любое понимание будет оценено

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