Gurus,
Мы находимся в процессе настройки пакета служб SSIS для загрузки отформатированного текстового файла на сервер SQL. Он будет иметь около 100 миллионов строк, а размер файла будет (несколько файлов по 15 ГБ каждый) 100 ГБ. Формат файла приведен в соответствие с XML-схемой, как указано ниже ... загрузка файла в таблицы сервера SQL занимает около 72 часов ...
Формат файла
EM | 123 | XYZ | 30 | Объем продаж | 20000 | AD | 1 Улица 1 | State1 | City1 | US | AD | 12Street 2 | State 2 | City2 | UK | CON | 2012689648 | CON | 42343435
EM | 113 | WYZ | 31 | Уровень продаж | 200 | AD | 12 Улица 1 | State2 | City2 | US | AD | 1Street 22 | Штат 3 | Город 3 | UK | CON | 201689648 | CON | 423435
EM | 143 | rYZ | 32 | Sales Egr | 2000 | AD | 113Street 1 | State3 | City3 | US | AD | 12Street 21 | Штат 4 | City 5 | UK | CON | 201269648 | CON | 443435
Данные поступят в вышеуказанном формате. Это означает, что «EM» до «AD» - это данные сотрудника, такие как код, имя, возраст, назначение, зарплата, а «AD» - это адрес, например, улица, штат, город, страна. Адресные данные могут быть множественными для одного и того же сотрудника ... аналогично "CON" - это контактная информация с номером телефона, который также может быть множественным.
Итак, нам нужно загрузить сведения о сотруднике в отдельную таблицу, сведения об адресе в отдельной таблице и контактные данные в отдельной таблице, указав код в качестве первичного ключа в сведениях о сотруднике и ссылочный ключ в двух других таблицах.
Мы спроектировали пакет подобным образом, имели в качестве источника компонент Script и построчно анализировали с помощью сценариев .NET, создавая несколько выходных буферов для каждой таблицы и добавляли строку в сценарий. Отображение выходных данных компонента Script на 3 адресата OLE DB (таблицы SQL Server).
Наш сервер Quad Core с 48 ГБ виртуализированной оперативной памяти, и у нас есть 2 ядра с 24 ГБ, выделенных для БД. Наша база данных SQL-сервера (модель простого восстановления) имеет файлы данных в общей сетевой папке, которая является хранилищем SAN. Для повышения производительности мы создали каждую таблицу в отдельном файле данных (первичном и вторичном) ... но все же это занимает около 72 часов.
Нужны указания по следующим пунктам.
Можно ли использовать BCP, если да, есть какие-либо указатели .. (Надеюсь, BCP будет работать лучше)
Любые предложения по указанному решению.
Любые альтернативы ...
В таблице не определены индексы и триггеры ... Мы даже установили defaultMaxbufferzie равным 100 МБ
Жду ответа .. Любая помощь очень ценится.