SQL Server 2008 - массовая вставка всего текстового файла в одно поле - PullRequest
5 голосов
/ 11 марта 2010

У меня есть текстовый файл (txt), содержащий форматированный текст (только разрывы строк, возврат каретки и вкладки) Он также содержит символы немецкого языка.

Я хочу использовать комментарий Bulk Insert в T-SQL, чтобы прочитать текстовый файл в одном поле таблицы базы данных.

Я выполнил эту команду:

 CREATE TABLE #MyTestTable (
    MyData NVARCHAR(MAX)
 )

 BULK INSERT [#MyTestTable]
FROM 'D:\MyTextFile.txt'

 SELECT * FROM #MyTestTable

Проблема в том, что он читает каждую строку текстового файла в новую строку в таблице Temp. Я хочу, чтобы он прочитал весь файл (форматирование и все) в одну строку.

Кроме того, символы немецкого языка, похоже, утеряны - их заменяют непечатные символы по умолчанию в представлении результатов.

У кого-нибудь есть идеи, как мне этого добиться?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 11 марта 2010

Вы можете использовать ROWTERMINATOR и CODEPAGE параметры. Терминатором строки по умолчанию является '\ r \ n'. Для CODEPAGE вам необходимо знать кодировку вашего необработанного файла и сопоставление по умолчанию вашей БД.

BULK INSERT [#MyTestTable]
FROM 'D:\MyTextFile.txt'
WITH (ROWTERMINATOR = '\0',
      CODEPAGE = 'ACP')

Также см. http://msdn.microsoft.com/en-us/library/ms188365.aspx

2 голосов
/ 07 сентября 2010

Используйте это:

FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'

Где | - ваш разделитель столбцов.

0 голосов
/ 11 марта 2010
  • не используйте массовую вставку. это сделано, чтобы взять одну запись на строку. Вам нужно написать код.
  • Правильно обрабатывать переход от вашего текстового файла к юникоду (nvarchar) в коде. Наверное, при массовой вставке применялась стандартная кодовая страница, теряя символы.

Это действительно плачет по какой-то мелкой работе по программированию - час или около того, плюс простое тестирование и столько времени, сколько нужно для работы.

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