Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по Bulk Insert и ROWTERMINATOR  [new]
AlexTih
Member

Откуда:
Сообщений: 32
Доброй ночи, уважаемые форумчане.
Подскажите пожалуйста как можно решить проблему. Экспортирую txt файл с разделителем полей ";"
на SQL сервер в таблицу , следующим запросом:
автор
BULK INSERT dbo.TEST
FROM '\\db\data\test.txt'
WITH
(
FIELDTERMINATOR =';',
-- ROWTERMINATOR = '\n',
-- FIRE_TRIGGERS,
CODEPAGE='1251',
-- DATAFILETYPE = 'char',
FIRSTROW =2,--пропускаю первую строчку , т.к в ней находятся названия полей
)

В таблице тип полей nvarchar(255) .
При экспорте выскакивает ошибка:
The column is too long in the data file for row 1, column 65. Verify that the field terminator and row terminator are specified correctly.
Вопрос как можно узнать как в текстовом файле организован переход на новую строку? Открывал текстовый файл, разделитель полей стоит ; . Переход строк не знаю как посмотреть, но скорее всего стандартный перенос каретки, т.к каждая строка начинается с новой строки( простите за тавтологию :) ).
18 сен 10, 03:48    [9460565]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
danik
Member

Откуда:
Сообщений: 13
Verify that the field terminator and row terminator are specified correctly.

Зачем Вы разделитель строк закомментарили?
-- ROWTERMINATOR = '\n',
18 сен 10, 04:15    [9460580]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
AlexTih
Member

Откуда:
Сообщений: 32
danik,

так он, если не указывать, то по умолчанию вроде указывается как перевод строки , я пробовал и
ROWTERMINATOR = '\n'
и
ROWTERMINATOR = '\r\n'
и
ROWTERMINATOR = '\r',--возврат каретки и перевод строки
и
ROWTERMINATOR = '''+CHAR(10)+''' --где-то вычитал =)
и все равно то же самое пишет:
Msg 4866, Level 16, State 1, Line 2
The bulk load failed. The column is too long in the data file for row 1, column 65. Verify that the field terminator and row terminator are specified correctly.
Msg 7399, Level 16, State 1, Line 2
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 2
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
18 сен 10, 05:37    [9460602]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
danik
Member

Откуда:
Сообщений: 13
А посмотрите в каком-нибудь HEX-редакторе свой файл (в том же FAR-е можно) и увидите код символа(ов) в конце строк.
18 сен 10, 05:49    [9460607]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 852
AlexTih,

Мне раз попался файл с разделителем строк '0x0a'. С точки зрения программистов это было нормально. :-)
18 сен 10, 15:42    [9461213]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
AlexTih
Member

Откуда:
Сообщений: 32
Всем спасибо!
20 сен 10, 08:46    [9464520]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Bulk Insert и ROWTERMINATOR  [new]
Dimbuch®
Member

Откуда: Москва
Сообщений: 134
Была похожая проблема. Не мог найти нужный разделитель.
0x0a помогло. Спасибо!
30 май 11, 15:59    [10732910]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить