Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт в sql server 2008 r2 текстовых файлов  [new]
evgen523
Member

Откуда:
Сообщений: 32
Испытываю сложности с импортом текстовых файлов в sql, а именно:
проблема в том, что пара строк в файле, а таких много (файлов), не соответствует формату всех остальных данных из файла.
Когда этих строк нет, следующий метод работает
BULK INSERT
[SQL1].[dbo].[1]
FROM 'C:..........\10218977.txt'
WITH (ERRORFILE = 'C:..........\error1_2013.txt', FIELDTERMINATOR ='\t', codepage = '1251')
Когда они есть то имеется ошибка
Сообщение 4832, уровень 16, состояние 1, строка 1
Массовая загрузка: непредвиденный конец файла данных.
Сообщение 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
Сообщение 7330, уровень 16, состояние 2, строка 1
Не удалось получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)".

Я понимаю, что когда sql видит отклонение от фрмата, то он полностью откатывает импортируемый пакет. А что с этим делать не понимаю. Помогите плиз....
27 дек 13, 22:06    [15357569]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
pio777
Member

Откуда:
Сообщений: 127
А что вы хотите делать со строками, которые не соответствуют формату?
28 дек 13, 00:19    [15357959]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
pio777
А что вы хотите делать со строками, которые не соответствуют формату?
Аффтар и сам не знает, он в панике - что делать, что делать, аааа.
Партнёр по бизнесу выдал инвалидные данные. Что делать? Как вести бизнес?
28 дек 13, 03:12    [15358304]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
evgen523
Member

Откуда:
Сообщений: 32
pio777,
Мне они не нужны.
28 дек 13, 12:40    [15358631]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
evgen523
Member

Откуда:
Сообщений: 32
Mnior,
Спасибо за участие...
28 дек 13, 12:42    [15358635]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
sdet
Member

Откуда:
Сообщений: 463
evgen523,
Удалите эти строки. Напишите программку для этого
28 дек 13, 12:59    [15358673]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
pio777
Member

Откуда:
Сообщений: 127
Варианты:
1. Использовать SSIS пакет для загрузки. Строки с плохим форматом будут игнорироваться.
2. Залить файл в таблицу с одной колонкой, удалить те строки, где количество разделитель не соответствует. Далее используя bcp выгрузить таблицу в файл. Теперь ваш bulk будет работать.
28 дек 13, 13:08    [15358693]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
evgen523
Я понимаю, что когда sql видит отклонение от фрмата, то он полностью откатывает импортируемый пакет. А что с этим делать не понимаю. Помогите плиз....
Попробуйте использовать параметр MAXERRORS, он позволяет игнорировать ошибки.
Только не помню, игнорируется пакет целиком, или одна строка, это нужно проверить.
28 дек 13, 13:50    [15358752]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
alexeyvg,

Он для того и сделан чтобы не прерывать пакет.
Но умолчанию стоит 10. Т.е. 10 строк могут быть проигнорированы.
Но не все он игнорирует: http://msdn.microsoft.com/ru-ru/library/ms188365.aspx
BOL
Параметр MAX_ERRORS не применяет проверки ограничения или преобразование типов данных money и bigint.
28 дек 13, 18:58    [15359488]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
Mnior
Он для того и сделан чтобы не прерывать пакет.
Но умолчанию стоит 10. Т.е. 10 строк могут быть проигнорированы.
Я это всё понмаю. Но я не знаю, откатывается ли весь батч целиком, или пропускаются отдельные строки, а нормальные вставляются. Что то я помню, что второй вариант.
28 дек 13, 21:19    [15359865]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
alexeyvg
Mnior
Он для того и сделан чтобы не прерывать пакет.
Но умолчанию стоит 10. Т.е. 10 строк могут быть проигнорированы.
Я это всё понмаю. Но я не знаю, откатывается ли весь батч целиком, или пропускаются отдельные строки, а нормальные вставляются. Что то я помню, что второй вариант.
То есть наоборот, помню, что откатывается весь батч.
28 дек 13, 21:19    [15359866]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
alexeyvg,

Импорт проходит и пакет не откатывается. Более того, параметр errorfile позволяет создать файл, в который помещаются проблемные строки. Их потом можно обратно партнеру отправить, например, или обработать другими средствами.
29 дек 13, 10:27    [15360939]     Ответить | Цитировать Сообщить модератору
 Re: Импорт в sql server 2008 r2 текстовых файлов  [new]
evgen523
Member

Откуда:
Сообщений: 32
Вроде работает. Залил все без разделителей полей и все лишнее почистил. Всем спасибо.
30 дек 13, 22:40    [15366836]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить