Что такое утилита BCP в SQL Server?sql-58

BCP (Bulk Copy Program) - это консольная утилита командной строки, входящая в состав SQL Server и предназначенная для высокоскоростного импорта/экспорта данных между SQL Server и файлами данных.

Основные возможности BCP

  1. Массовый экспорт данных из таблиц или представлений в файлы
  2. Массовый импорт данных из файлов в таблицы SQL Server
  3. Работа с различными форматами файлов (CSV, TXT, собственный бинарный формат)
  4. Поддержка разделителей и квалификаторов для текстовых форматов
  5. Возможность параллельной загрузки для повышения производительности

Синтаксис базовой команды BCP

bcp {[[database_name.][schema].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-m max_errors] [-f format_file] [-x] [-e err_file]
    [-F first_row] [-L last_row] [-b batch_size]
    [-n native_type] [-c character_type] [-q quoted_identifier]
    [-t field_term] [-r row_term] [-i input_file] [-o output_file]
    [-a packet_size] [-S server_name] [-U username] [-P password]
    [-v version] [-R regional_format] [-k keep_null_values]
    [-E keep_identity_values] [-h "hint [,...n]"]

Практические примеры использования

1. Экспорт данных в CSV

bcp AdventureWorks.HumanResources.Department out C:\Export\departments.csv -c -t, -T -S localhost
  • -c - использовать символьный формат
  • -t, - задает запятую как разделитель полей
  • -T - использовать доверительное соединение (Windows Authentication)
  • -S - указать сервер

2. Импорт данных из CSV

bcp AdventureWorks.HumanResources.Department in C:\Import\new_departments.csv -c -t, -T -S localhost

3. Экспорт результатов запроса

bcp "SELECT Name, GroupName FROM AdventureWorks.HumanResources.Department" queryout C:\Export\dept_query.csv -c -t, -T -S localhost

Ключевые параметры BCP

ПараметрОписание
-nИспользовать собственный (бинарный) формат данных
-cИспользовать символьный формат (текстовый)
-FНомер первой строки для обработки
-LНомер последней строки для обработки
-bРазмер пакета (количество строк в одном пакете)
-eФайл для записи ошибок
-EСохранять значения identity при импорте
-qИспользовать квантифицированные идентификаторы

Преимущества BCP

  1. Высокая производительность - самая быстрая утилита для массовых операций
  2. Гибкость форматов - поддержка текстовых и бинарных форматов
  3. Автоматизация - легко интегрируется в скрипты и задания SQL Agent
  4. Минимальные накладные расходы - работает без графического интерфейса

Ограничения BCP

  1. Нет графического интерфейса (только командная строка)
  2. Ограниченные возможности трансформации данных
  3. Сложность обработки ошибок при больших объемах данных

Альтернативы BCP

  1. SQL Server Import/Export Wizard - графический интерфейс
  2. SSIS (SQL Server Integration Services) - для сложных ETL процессов
  3. BULK INSERT - T-SQL команда для импорта данных

Резюмируем

BCP - это мощная консольная утилита SQL Server для:

  • Быстрого экспорта больших объемов данных
  • Эффективного импорта данных из файлов
  • Работы с различными форматами данных
  • Автоматизации задач переноса данных

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