Азбука BCP
ОГЛАВЛЕНИЕ
Страница 1 из 6
Bulk copy program (BCP), это специальная утилита командной строки для массового копирования, которая поставляется со всеми изданиями SQL Server. Она незаслуженно редко используется, но является необходимым компонентом инструментария DBA. Хотя эта утилита не имеет своего ярлыка в папке SQL Server, к которой можно перейти из меню Start, и только кратко упоминается в SQL Server Books Online (BOL), программа BCP пережила многочисленные версии SQL Server и даже претерпела незначительные улучшения в его последних реализациях. Несмотря на не высокую популярность BCP, она остается одним из лучших инструментов для быстро перемещения большого объёма данных между базами SQL Server. Если Вы правильно используете BCP, с её помощью можно перемещать большие наборы данных быстрее, чем с помощью встроенных средств Enterprise Manager и Data Transformation Services (DTS), которые чаще всего применяются для этих целей.Если Вы плохо знакомый с BCP, ниже будет представлен краткий обзор её основных возможностей. BCP перемещает данные из таблиц базы данных в файлы и наоборот. BCP работает в основном с плоскими файлами, данные в которых разделены табуляцией, или с текстовыми файлами с данными фиксированной длинны. BCP работает также и со специальными файлами, разработанного для SQL Server формата, которые позволяют передавать даже не символьные данные. BCP не умеет создавать объекты базы данных, так что таблицы должны существовать до того, как Вы будете использовать BCP, чтобы перенести в них данные.
Как правило, когда Вы вставляете записи в таблицу, сервер вначале регистрирует эти операции в журнале транзакций (transaction log), а затем уже непосредственно записывает данные в базу. Для больших наборов данных, эта операция требует существенного времени и дискового пространства, т.к. применяется двойная фиксация транзакций. Однако, BCP может импортировать данные в таблицу быстрее чем обычная регистрируемая вставка, потому что, при некоторых обстоятельствах, сервер не будет регистрировать операции с записями в transaction log. Вставка записей в таблицу без регистрации в transaction log называется быстрым массовым копированием (fast bulk copy), и автор более подробно описывает такие операции ниже в статье. Но перед этим предлагается более подробно рассмотреть способы запуска утилиты BCP из командной строкой.