|
|
|
MSSQL как загрузить большой файл
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Подскажите пожалуйста, как загрузить большой файл в бд? Задча следующая: Есть текстовый файл объемом 500 мб в котором 2 500 000 записей, в каждой записи n-е количество столбцов. требуется считать файл по сети и загрузить выборочные столбцы в БД. требуется делать это максимально быстро. Пробовал делать в рамках одой транзакции, но тогда растет лог. Если инсертить без транзакции, то получается значительно дольше т.к. комитится каждый инсерт. bulk insert тоже не подходит так как количествво столбцов может менятся, да и не хотелось бы загружать файл в полностью. Может кто сталкивался с похожей проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2015, 23:11 |
|
||
|
MSSQL как загрузить большой файл
|
|||
|---|---|---|---|
|
#18+
такое загружается файлом во временную таблицу , а уж потом в нужную только необходимое. это будет самое быстрое и правильное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2015, 23:39 |
|
||
|
MSSQL как загрузить большой файл
|
|||
|---|---|---|---|
|
#18+
вадя, Временная таблица имеется ввиду которая #? А структуру таблицы для загрузки должна совпадать со структурой файла или можно выборочные столбцы загрузить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2015, 11:43 |
|
||
|
MSSQL как загрузить большой файл
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2015, 12:17 |
|
||
|
MSSQL как загрузить большой файл
|
|||
|---|---|---|---|
|
#18+
jedditeвадя, Временная таблица имеется ввиду которая #? А структуру таблицы для загрузки должна совпадать со структурой файла или можно выборочные столбцы загрузить? 1 сейчас уже не помня как у MSSQL временные таблицы обозначаются.... 2 это тоже надо в первоисточниках смотреть. но если и грузить все столбцы - то потом можно селектом скопировать только нужные, ведь для отбора в основную используется какой-то фильтр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2015, 12:31 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2125634]: |
0ms |
get settings: |
7ms |
get forum list: |
24ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 482ms |

| 0 / 0 |
