2015-03-06 2 views
0

Привет, ребята, у меня есть 5 довольно больших файлов excel (800 000 строк каждый), которые я импортирую в базу данных sql. Я написал инструмент, чтобы сделать это, но я импортирую по одной строке за один раз из одной таблицы за другой, которая занимает около 15 часов, и так как это нужно делать раз в месяц, я хотел бы знать, что является самым быстрым способом сделать это.Самый быстрый способ добавить данные в базу данных

Быстро ли работает сразу пять импортных импортных товаров, но на разную временную таблицу и их слияние, или просто быстрее вставлять и обновлять, а объемная вставка увеличивает скорость вообще?

Большое спасибо

+0

Из моего опыта вставка BULK выполняется быстрее, чем 1 вставка. – CurseStacker

+0

Есть ли предел тому, сколько строк вы можете вставить? – crackruckles

+0

Не слышал о пределе для BULK, я использовал его для файлов с миллионами строк, он беспрестанно пробивает их, поэтому вы должны быть хорошими. – HoneyBadger

ответ

1

Попробуйте использовать команду BCP. Это обычно быстрее, чем обычные вставки.

bcp {dbtable | query} {in | out | queryout | format} datafile 

[-n native type] [-c character type] [-S server name] [-U username] 

[-P password] [-T trusted connection] 

Также проверьте, имеет ли таблица, в которую вы импортируете, индексы. Попробуйте отказаться от индексов и вставить данные.

+0

Все, что я получаю, это 0 строк, скопированных, когда я использую bcp. bcp database.dbo.temp2 в «D: \ temp \ test.csv» -S SERVER-PC \ SQLEXPRESS -T -q -c -t, он дает мне SQLState = S1000, NativeError = 0 Ошибка = [Microsoft] [ Собственный клиент SQL Server 11.0] Неожиданный EOF встречается в Файл данных BCP – crackruckles

2

Объемный метод вставки будет быстрее всего. Обычно достигается скорость миллионов записей в минуту, но многое зависит от количества столбцов, размера строк, аппаратного обеспечения. и т. д.

Командная строка BCP Утилита и инструкция T-SQL BULK INSERT не поддерживают файлы Excel изначально, но могут обрабатывать текстовые файлы с разделителями. Возможно, вы захотите использовать пакет служб интеграции SQL Server, который может импортировать файлы Excel напрямую и использовать метод массовой вставки, когда указан параметр быстрой загрузки. Если вы еще не использовали SSIS, есть немного кривой обучения. Другой альтернативой является использование SqlBulkCopy из приложения .NET.

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

Смежные вопросы