|
BULK INSERT
|
|||
---|---|---|---|
#18+
всем привет помогите, пожалуйста имею два огромных файла в каждом по 90 полей в первом 360 тыс строк во втором 480 тыс строк Разделитель вертикальная черта Импортирую: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
содержимое файла опубликовать не могу, извините - корпоративная этика. Первый файл импортируется нормально и без проблем. Второй не импортируется. Сервер пишет ошибку: авторСообщение 4832, уровень 16, состояние 1, строка 21 Массовая загрузка: непредвиденный конец файла данных. Сообщение 7399, уровень 16, состояние 1, строка 21 Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке. Сообщение 7330, уровень 16, состояние 2, строка 21 Не удалось получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)". в журнале ошибок пишет: err2.log.Error.TxtRow 205778 File Offset 412035868 ErrorFile Offset 0 - HRESULT 0x80004005 не совсем понимаю, почему в файле err2.log.Error.Txt ссылка на строку 205778 в журнале ошибочных строк err2.log не увидел никаких явных отличий от корректных строк, чтобы на что-то обратить внимания. Но файл ошибочных строк содержит предпоследнюю строку из импортируемого файла. перевод каретки в конце файла есть авторMicrosoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64) Mar 18 2018 09:11:49 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: ) (Hypervisor) чего я не учел? что не так ? спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 18:16 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
1. Методом деления файла пополам определяете проблемную строку (необязательно физически делить файл. BULK умеет грузить со строки N). 2. Методом деления строки пополам - выясняете проблемный разделитель. 3. Никто это за вас делать не будет. 4. Чудесной кнопки - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 18:43 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
пардон, дважды нажал кнопку. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 18:44 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
aleks222 1. Методом деления файла пополам определяете проблемную строку (необязательно физически делить файл. BULK умеет грузить со строки N). Так и начал делать. И параллельно рыл интернет Наткнулся еще на такую форму запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
И все успешно загрузилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:01 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
хотя нет. Слишком рано радовался. Отсутствие текста ошибки не говорит об отсутствии ошибки. В итоге ничего не загрузилось и журнал ошибок тот же. Пошел я дальше ковыряться и вспоминать метод дихотомии ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:08 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
а есть ли параметр, который бы говорил, что загрузить нужно только 10000 строк и не более ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:15 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder Отсутствие текста ошибки не говорит об отсутствии ошибки. Я бы джуниорам просто запрещал бы несколько лет писать слово TRY, пока у них не наберётся опыта. Сделал бы поиск в закоммиченом коде, и дни, когда был написан TRY, не оплачивал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:20 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
Код: sql 1.
и получаю: авторСообщение 4832, уровень 16, состояние 1, строка 21 Массовая загрузка: непредвиденный конец файла данных. Сообщение 7399, уровень 16, состояние 1, строка 21 Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке. Сообщение 7330, уровень 16, состояние 2, строка 21 Не удалось получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)". Код: sql 1.
авторСообщение 4832, уровень 16, состояние 1, строка 21 Массовая загрузка: непредвиденный конец файла данных. Сообщение 7301, уровень 16, состояние 2, строка 21 Не удалось получить требуемый интерфейс ("IID_IColumnsInfo") от поставщика OLE DB "BULK" для связанного сервера "(null)". Файл совершенно не выглядит битым Попробую файл в эксцеле открыть с разделителями ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:27 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder Первый файл импортируется нормально и без проблем. Второй не импортируется. SHKoder Файл совершенно не выглядит битым Посмотрите, чем отличаются 2 файла, особенно плохой файл в строке 205779 У вас, если вы работаете с файлами, должен быть нормальный редактор, смотреть байты. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:45 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
этот же файл подсунул в эксцель Да, здесь разделитель знак решетки Для MSSQL файл импорта делал с подменой разделителя на вертикальную черту. В итоге со знаком решетки тоже не загружается, проблема остается той же. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:46 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
ну и второй шаг парсинга в эксцеле ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:47 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder [src] FIRSTROW = 205778 Файл совершенно не выглядит битым Попробую файл в эксцеле открыть с разделителями LASTROW = last_row. Указывает номер последней строки для загрузки. Значение по умолчанию 0, что обозначает последнюю строку в указанном файле данных Блин, ну чо проще получить номер битой строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:47 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder, Строка может быть кривая - с неверным количеством столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:47 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
aleks222 Блин, ну чо проще получить номер битой строки? PS Впрочем, судя по всему, автор писатель, а не читатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 19:50 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
я и читатель и писатель просто не всегда включается логика даже в элементарных вещах, где логике перестает что либо поддаваться я замылил файл https://transfiles.ru/7fv8n прошу помощи, знатоки... ,FIRSTROW = 1 ,LASTROW = 5 успешно грузятся ,FIRSTROW = 5 ,LASTROW = 6 с ошибкой: авторСообщение 4832, уровень 16, состояние 1, строка 3 Массовая загрузка: непредвиденный конец файла данных. Сообщение 7399, уровень 16, состояние 1, строка 3 Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке. Сообщение 7330, уровень 16, состояние 2, строка 3 Не удалось получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)". ,FIRSTROW = 8 ,LASTROW = 9 уже другая ошибка: авторСообщение 4832, уровень 16, состояние 1, строка 3 Массовая загрузка: непредвиденный конец файла данных. Сообщение 7301, уровень 16, состояние 2, строка 3 Не удалось получить требуемый интерфейс ("IID_IColumnsInfo") от поставщика OLE DB "BULK" для связанного сервера "(null)". однако, если из файла удаляю строки с 1 по 8 включительно, то строки загружаются. НО ТРИ! хотя в файле их еще девять!! о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 22:25 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder однако, если из файла удаляю строки с 1 по 8 включительно, то строки загружаются. НО ТРИ! хотя в файле их еще девять!! о_О А если 6-ю строчку переставить первой, будет ошибка? Разделитель то у вас в скрипте какой, надеюсь, поменяли на #? Выложите скрипт и create table, для этого вашего файла-примера. SHKoder я замылил файл https://transfiles.ru/7fv8n ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 23:08 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 23:37 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
удалил из файла строку, которая определяет наименования полей в импортируемой таблице. и всё отлично залилось. всем огромное спасибо за участие! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 23:49 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
а, ну и таблицу приемник пересоздал. видимо в нем что-то было криво ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 23:50 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
alexeyvg SHKoder Код: sql 1.
В оригинале 65001. А после моих редактирований, видимо стал 1251. Извините, упустил этот момент. Про решётку писал выше, что на первоисточнике была #, потом поменял ее на вертикальную черту ,чтобы воспользоваться инструментом массовой загрузки. Начал делать скрипты под измененный файл. Но в итоге вернулся к первоисточнику с решёткой. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2020, 00:03 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
SHKoder удалил из файла строку, которая определяет наименования полей в импортируемой таблице. Может, всё таки дело было в таблице, непонятно... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2020, 00:12 |
|
BULK INSERT
|
|||
---|---|---|---|
#18+
я использовал таблицу, которую создал мастер "Импорт и Экспорт данных MSSQL..." в первую очередь я пробовал им сделать заливку. Но он выругался, что ему такой файл не поднять. И я начал вспоминать как это было в BCP, но прав не хватило включить xp_cmdshell. Тогда я обратился к BULK INSERT и поленился создать свою таблицу. Подумал, что приемник же уже есть, который создал визард. И пытался данные впихнуть в эту таблицу. По Вашему совету я полез в скрипт и пересоздал таблицу. В файле, который Вам раньше выслал не было шапки и делать FIRSTROW отпала необходимость и он полностью залился в пересозданную таблицу. Тогда я вернулся к файлам первоисточникам. Снес в них первую строку (шапку) и они закачались идеально. В ночь уже не буду колдовать, но в следующий раз попробую не сносить шапку, а укажу FIRSTROW = 2 Еще раз огромное спасибо за напутствия. Хотя проблема осталась не ясной. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2020, 00:28 |
|
|
start [/forum/topic.php?fid=46&fpage=63&tid=1686263]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 149ms |
0 / 0 |