Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / MSSQL как загрузить большой файл / 5 сообщений из 5, страница 1 из 1
28.03.2015, 23:11
    #38920138
jeddite
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL как загрузить большой файл
Доброго времени суток.
Подскажите пожалуйста, как загрузить большой файл в бд?

Задча следующая:
Есть текстовый файл объемом 500 мб в котором 2 500 000 записей, в каждой записи n-е количество столбцов. требуется считать файл по сети и загрузить выборочные столбцы в БД. требуется делать это максимально быстро.

Пробовал делать в рамках одой транзакции, но тогда растет лог. Если инсертить без транзакции, то получается значительно дольше т.к. комитится каждый инсерт.

bulk insert тоже не подходит так как количествво столбцов может менятся, да и не хотелось бы загружать файл в полностью.

Может кто сталкивался с похожей проблемой.
...
Рейтинг: 0 / 0
28.03.2015, 23:39
    #38920154
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL как загрузить большой файл
такое загружается файлом во временную таблицу , а уж потом в нужную только необходимое.
это будет самое быстрое и правильное
...
Рейтинг: 0 / 0
29.03.2015, 11:43
    #38920275
jeddite
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL как загрузить большой файл
вадя,

Временная таблица имеется ввиду которая #?
А структуру таблицы для загрузки должна совпадать со структурой файла или можно выборочные столбцы загрузить?
...
Рейтинг: 0 / 0
29.03.2015, 12:17
    #38920288
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL как загрузить большой файл
jedditeЗадча следующая:
Есть текстовый файл объемом 500 мб в котором 2 500 000 записей, в каждой записи n-е количество столбцов. требуется считать файл по сети и загрузить выборочные столбцы в БД. требуется делать это максимально быстро.Уже сама постановка кривоватая. Зачем делать переменное количество полей в строке? А потом мужественно преодолевать созданные трудности. Если источник данных свой - исправить, если извне - написать адаптер.jedditebulk insert тоже не подходит так как количествво столбцов может менятся, да и не хотелось бы загружать файл в полностью. Если уж совсем невозможно использовать BULK INSERT, то рекомендации стандартные.
1. Используйте PreparedStatement + JDBC batch .
2. Выполняйте commit после заданного количества операций с базой, например, коммитить каждую 1000 записей.

jedditeПробовал делать в рамках одой транзакции, но тогда растет лог.По секрету скажу, что в нормальных промышленных системах использование recovery model Simple - не есть хорошая практика. И рост лога - вещь нормальная. Ему потом делают truncate и при этом сохраняются все транзакции. Вы же, как понимаю, используете именно Simple . Посмотрите в сторону Bulk logged чтобы минимизировать затраты, если все же надумаете использовать BULK INSERT.
...
Рейтинг: 0 / 0
29.03.2015, 12:31
    #38920293
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL как загрузить большой файл
jedditeвадя,

Временная таблица имеется ввиду которая #?
А структуру таблицы для загрузки должна совпадать со структурой файла или можно выборочные столбцы загрузить?
1 сейчас уже не помня как у MSSQL временные таблицы обозначаются....
2 это тоже надо в первоисточниках смотреть.
но если и грузить все столбцы - то потом можно селектом скопировать только нужные, ведь для отбора в основную используется какой-то фильтр?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / MSSQL как загрузить большой файл / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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