powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Импорт из CSV
7 сообщений из 7, страница 1 из 1
Импорт из CSV
    #39929367
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам по себе скрипт простой:
Код: sql
1.
SELECT  *  FROM  OPENROWSET(BULK 'K:\Exchan\data.csv', FORMATFILE= 'K:\Exchan\Index.fmt' , FIRSTROW =2) AS a



Но вот сам файл CSV имеет в конце две строки, помимо данных и судя по всему в одной из них "Enter" символ.
При выполнении вышеупомянутого скрипта , выдается ошибка:
Сообщение 4832, уровень 16, состояние 1, строка 446 Bulk load: An unexpected end of file was encountered in the data file. - Sql Server 2016

В последней строке описания файла Index.fmt , последняя строка описана вроде верно:
Код: xml
1.
11  SQLCHAR     0   100  "\n" 11	DIVIS "Cyrillic_General_CI_AS"



Что ещё можно придумать или хотя бы оценить строк сколько с данными, чтобы опцию впихнуть LASTROW= Row_count?

Спасибо и всех с пятницей конечно!
...
Рейтинг: 0 / 0
Импорт из CSV
    #39929421
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed,

где-то в середине файла могут быть непечатные символы, 0х00 в том числе.
...
Рейтинг: 0 / 0
Импорт из CSV
    #39929444
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
medoed,

где-то в середине файла могут быть непечатные символы, 0х00 в том числе.

Нее, если конструкцию обернуть в try, то она всё отображает и падает на строке после данных.
...
Рейтинг: 0 / 0
Импорт из CSV
    #39930460
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выяснилось, что в конце CSV файла две пустые строки, при удалении последней строки - cкрипт работает.
Код: sql
1.
SELECT  *  FROM  OPENROWSET(BULK 'K:\Exchan\data.csv', FORMATFILE= 'K:\Exchan\Index.fmt' , FIRSTROW =2) AS a



Но доступа к файлу нет (он на сети), чтобы удалять эту строку.
Есть какие-нибудь обходные пути? Спасибо!
...
Рейтинг: 0 / 0
Импорт из CSV
    #39930489
Serп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
medoed,

Если файлы не слишком большие, можно балкать построчно в таблицу с одним полем varchar(max), удалять неформат, а потом уже парсить оставшиеся строки.
...
Рейтинг: 0 / 0
Импорт из CSV
    #39930502
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed
Но доступа к файлу нет (он на сети), чтобы удалять эту строку.
Есть какие-нибудь обходные пути? Спасибо!

Скопировать локально, пофиксить символы, загрузить в базу.
...
Рейтинг: 0 / 0
Импорт из CSV
    #39930515
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serп
medoed,

Если файлы не слишком большие, можно балкать построчно в таблицу с одним полем varchar(max), удалять неформат, а потом уже парсить оставшиеся строки.

Да, меньше мегабайта. Я решил так делать, похоже на Ваш способ:
1) Считываю содержимое файла в переменную varchar(max) и зная разделители = ';' и кол-во столбцов - вычисляю кол-во строк.
2) Подставляю в первый скрипт опцию
Код: sql
1.
 LASTROW= @RowCount 

в динамике и всё работает.
Файл структурно предопредлелён,так что вроде работает.
Спасибо за отклик.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Импорт из CSV
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]