Некоторые вещи, которые следует учитывать при перемещении больших объемов данных в / из SQL Server (на самом деле, на любой сервер данных).
- Если вы можете разбить файл на части и загрузить их. Скорее всего, вы не используете или почти не напрягаете ресурсы SQL Server в целом, и большая продолжительность копии BCP открывает вам возможность для любого прерывания в общении. Итак, разбейте файл на части и загрузите на части асинхронно (максимально безопасно) или загрузите 2, 4 или 10 частей файла одновременно ... посмотрите, сможете ли вы вытащить администратора базы данных из их кресла:).
- Если вы можете поместить файл с локального диска на SQL Server. Избегайте возможных перебоев в работе сети / хранилища. ППГ не прощает перерыв в общении.
- Устранить любую индексацию в таблице назначения. ПП в тупой, кучу, пустой, скучный стол. Избегайте каких-либо дополнений и, если можете, используйте столбцы char / varchar (исключая также затраты на конверсию).
- Вы можете настроить размер пакета, который BCP будет ставить в очередь перед записью в SQL Server. По умолчанию 1000, но вы можете увеличить его до 100 000 и более. Проведите некоторое тестирование, чтобы увидеть, что работает лучше для вас. С большей партией вы сэкономите немного времени, меньше касаясь физического диска (это зависит и от многих других вещей, тоже).
- Если файл необходимо перенаправить через nework, вы также можете настроить размер сетевого пакета. Поиск помощи по расчету вашего идеального размера пакета.
- Существуют и другие доступные варианты, но, как утверждают другие, без подробностей вы не можете получить целевой ответ.
Поделитесь своей командой bcp. поделиться структурой файла. поделитесь информацией о таблице, в которую вы входите. Распределенная среда (SQL Server и файл bcp?), Любая сеть задействована? Сколько записей в секунду вы получаете? Файл широкий или узкий? Насколько широкий файл? 1 миллиард записей из 5 целочисленных столбцов - это не так уж много данных. Но 1 миллиард записей шириной 2000 байт ... это чудовище!