Служебная программа bcp

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)База данных SQL в Microsoft Fabric

Утилита программы массового копирования (bcp) массово копирует данные между экземпляром SQL Server Database Engine и файлом данных в пользовательском формате.

Note

Чтобы ознакомиться со bcp статьёй о Microsoft Fabric Data Warehouse, см. служебная программа bcp (Fabric Data Warehouse).

Область применения:хранилище в Microsoft Fabric

Утилита программы массового копирования (bcp) массово копирует данные между Microsoft Fabric Data Warehouse и файлом данных в формате, заданном пользователем.

Note

Вы просматриваете bcp статью о Microsoft Fabric Data Warehouse. Чтобы просмотреть статью о других платформах, см. bcp utility.

Используйте bcp утилиту для импорта большого количества новых строк в таблицы ядро СУБД или для экспорта данных из таблиц в файлы данных. За исключением случаев использования с параметром queryout , программа не требует знаний о Transact-SQL. Чтобы импортировать данные в таблицу, необходимо использовать файл формата, созданный для этой таблицы, или понять структуру таблицы и типы данных, допустимые для его столбцов.

Дополнительные сведения о том, какая версия bcp установлена в системе, требованиях к системе и как получить bcp, см. в разделе "Скачать и установить программу bcp".

Note

bcp Файлы данных не содержат никаких сведений о схеме или формате. Если вы используете bcp для резервного копирования данных, а затем удалите или измените исходную таблицу, вам потребуется либо идентичное определение таблицы, либо файл формата для импорта данных обратно.

Сведения о соглашениях, используемых в синтаксисе bcp, см. в статье Соглашения синтаксиса Transact-SQL (Transact-SQL).

Как использовать bcp

Сведения об использовании bcp, включая примеры команд, см. в разделе "Как использовать служебную программу BCP".

Использование bcp в Linux и macOS

Сведения о том, как установить средства командной строки в macOS и Linux, см. в разделе «Установка инструментов командной строки SQL Server, таких как sqlcmd и bcp, на Linux».

Рекомендации по bcp для Linux и macOS

  • Терминатор поля — это вкладка (\t).

  • Конец строки является новой строкой (\n).

  • Для передачи SQL Server в SQL Server используйте собственный формат (-n). Используйте формат символов (-c) только в том случае, если данные пересекаются в системе, отличной от SQL Server, или если файл данных не должен содержать расширенные символы. Дополнительные сведения см. в разделе «Лучшие практики для режима символов и собственного режима».

  • Необходимо процитировать или скрыть обратную косую черту (\) в аргументе командной строки. Например, чтобы указать новую строку в качестве пользовательского конца строки, используйте один из следующих механизмов:

    • -r\\n
    • -r"\n"
    • -r'\n'

Поддержка TDS 8.0

SQL Server 2025 (17.x) предоставляет поддержку TDS 8.0 для служебной bcp программы.

Syntax

Note

Чтобы посмотреть поддерживаемый bcp синтаксис для Microsoft Fabric Data Warehouse, см. раздел Синтаксис для Fabric Data Warehouse.

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -H hostname_in_certificate ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -J server_certificate ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -P password ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ server_name [ \instance_name ] ] ]
    [ -t field_term ]
    [ -T ]
    [ -U login_id ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z[0|1] ]

Note

Вы просматриваете bcp синтаксис для Microsoft Fabric Data Warehouse. Чтобы просмотреть поддерживаемый синтаксис для других платформ, см. раздел Синтаксис для утилиты bcp.

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -H hostname_in_certificate ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -J server_certificate ]
    [ -k ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ sql_endpoint_name ] ]
    [ -t field_term ]
    [ -T ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]

Параметры командной строки

В следующей таблице перечислены параметры командной строки, доступные в bcp, и указано, какими операционными системами они поддерживаются.

Параметр командной строки Поддерживается в Windows Поддерживается в Linux и macOS Поддерживается в Fabric
Режим объекта и передачи
[database_name.]схема.{table_name | view_name | "query"} Да Да Да
{вdata_file | outdata_file | queryoutdata_file | format nul} Да Да Да
-q Да Да Да
Подключение и проверка подлинности
-S [server_name[\instance_name]] Да Да Да
database_name Да Да Да
-U login_id Да Да Нет
- P-пароль Да Да Нет
Проверка подлинности Microsoft Entra Да Да Да
-D Да Да Да
-K application_intent Да Да Нет
-l login_timeout Да Да Да
-H hostname_in_certificate Да Да Нет
-J server_certificate Да Да Нет
-T Да Да Да
-Y[s| m| o] Да 1 Да 1 Да
Представление данных
-c Да Да Да
-C { ACP | OEM | RAW | code_page } Да Нет Да
-n Да Да Да
-N Да Нет Да
-w Да Да Да
-z[0|1] Нет Да 2 Нет
Форматирование файлов
-f format_file Да Да Да
-x Да Нет Да
Пакетная обработка и производительность
-a packet_size Да Да Да
-b batch_size Да Да Да
-h"hint [,... n]" Да Нет Нет
-m макс_ошибок Да Да Да
-F first_row Да Да Да
-L last_row Да Да Да
-r row_term Да Да Да
-t field_term Да Да Да
Обработка значений
-k Да Да Да
-E Да Да Нет
Операции ввода-вывода и ведение журнала файлов
-i input_file Да Нет Да
-o output_file Да Нет Да
-e err_file Да Да Да
Совместимость и управление версиями
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Да Нет Да
-u Да 1 Да 1 Да
Другие параметры
-R Да Да Да
-v Да Да Да

1 Требуется bcp версия 18 или более поздняя, которая поставляется с SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 и более поздних версий.

Режим объекта и режим передачи

database_name

Имя базы данных, содержащей указанную таблицу или представление. Если этот параметр не указан, используется база данных по умолчанию для пользователя.

Можно также явным образом указать имя базы данных с помощью параметра -d.

schema

Имя владельца данной таблицы или представления. schema указывать не обязательно, если пользователь, выполняющий операцию, является владельцем указанной таблицы или представления. Если вы не указываете схему, и пользователь, выполняющий операцию, не владеет указанной таблицей или представлением, ядро СУБД возвращает сообщение об ошибке, и операция отменяется.

table_name

Имя таблицы назначения при импорте данных в ядро СУБД (in), и исходная таблица при экспорте данных из ядро СУБД (out).

view_name

Имя представления назначения при копировании данных в ядро СУБД (in), и исходного вида при копировании данных из ядро СУБД (out). При использовании в качестве назначения (in) представление поддерживается только в том случае, если все его столбцы ссылаются на одну таблицу. Это ограничение не применяется, если представление используется в качестве источника (out). Дополнительные сведения об ограничениях на копирование данных в представления см. в разделе INSERT.

"query"

Запрос Transact-SQL, возвращающий результирующий набор. Если запрос возвращает несколько результирующих наборов, то в файл данных будет скопирован только первый результирующий набор. Последующие результирующие наборы не учитываются. Используйте двойные кавычки для запроса и одинарные кавычки для элементов, встроенных в запрос. Кроме того, необходимо указать queryout при массовом копировании данных из запроса.

Запрос может ссылаться на хранимую процедуру до тех пор, пока все таблицы, на которые ссылается хранимая процедура, существуют перед выполнением инструкции bcp . Например, если хранимая процедура создает временную таблицу, инструкция bcp не выполняется, поскольку временная таблица существует только во время выполнения, а не в момент выполнения инструкции. В этом случае рассмотрите возможность поместить результаты хранимой процедуры в таблицу, а затем использовать bcp для копирования данных из таблицы в файл данных.

в

Копирует данные из файла в таблицу базы данных или представление. Указывает направление массового копирования.

выход

Копирует данные из таблицы базы данных или представления в файл. Указывает направление массового копирования.

Если указать существующий файл, то файл перезаписывается. bcp Когда программа извлекает данные, она представляет пустую строку в виде NULL и строку NULL в виде пустой строки.

data_file

Полный путь к файлу данных. Когда вы массово импортируете данные в ядро СУБД, файл данных содержит данные для копирования в указанную таблицу или представление. Когда вы массово экспортируете данные из ядро СУБД, файл данных содержит данные, скопированные из таблицы или представления. Путь может содержать от 1 до 255 символов. Файл данных может содержать максимум 2^63 – 1 строк.

queryout

Копирует данные из запроса и должен быть указан только при массовом копировании данных из запроса.

format

Создает файл формата на основе указанных параметров (-n, -c-wили-N) и разделителей таблиц или представлений. При пакетном копировании данных команда bcp может ссылаться на файл формата, что избавляет от необходимости повторно вводить сведения о формате в интерактивном режиме. Для параметра format требуется параметр -f; для создания файла формата XML также требуется параметр -x. Дополнительные сведения см. в статье "Создание файла форматирования с помощью bcp (SQL Server)". Необходимо указать nul в качестве значения (format nul).

-q

Выполняет оператор SET QUOTED_IDENTIFIER ON через соединение между утилитой bcp и экземпляром компонента ядро СУБД. Используйте этот параметр для указания базы данных, владельца, таблицы или имени представления, содержащих пробел или одинарную кавычку. Заключите всю трехчастную таблицу или название представления в кавычки ("").

Чтобы указать имя базы данных, содержащее пробел или одиночную кавычку, необходимо использовать опцию -q.

-q не применяется к значениям, передаваемым в -d.

Дополнительные сведения см. в разделе Примечания в этой статье.

Подключение и проверка подлинности

-S [server_name[\instance_name]]

Указывает имя экземпляра SQL Server, к которому нужно подключиться, или, если используется -D, DSN.

Если сервер не указан, bcp программа подключается к экземпляру SQL Server по умолчанию на локальном компьютере. Этот параметр требуется при выполнении команды bcp с удаленного компьютера в сети или на локальном именованном экземпляре. Чтобы подключиться к экземпляру SQL Server по умолчанию на сервере, укажите только server_name. Чтобы подключиться к именованному экземпляру SQL Server, укажите <server_name>\<instance_name>.

database_name

Указывает базу данных, с которой надо соединиться. По умолчанию bcp подключается к вашей базе данных по умолчанию. Если указать -d <database_name> и трехкомпонентное имя (database_name.schema.table, переданное в качестве первого параметра bcp), возникает ошибка, так как имя базы данных невозможно указать дважды. Если database_name начинается с дефиса (-) или косой черты (/), не добавляйте пробел между -d именем базы данных.

-U login_id

Указывает идентификатор входа, используемый для подключения к ядро СУБД.

- P-пароль

Указывает пароль для имени пользователя. Если не использовать этот параметр, команда bcp запрашивает пароль. Если этот параметр используется в конце командной строки без пароля, bcp используется пароль по умолчанию (NULL).

Important

Не используйте пустые пароли. Выбирайте надежные пароли.

Чтобы маскировать пароль, не указывайте параметр -P вместе с параметром -U. Вместо этого после указания bcp вместе с параметром -U и другими параметрами (не указывайте -P) нажмите клавишу Enter, и команда предложит ввести пароль. Этот метод гарантирует, что пароль маскируется при вводе.

Если пароль начинается с дефиса (-) или косой черты (/), не добавляйте пробел между -P значением пароля .

В Linux и macOS, при использовании с опцией -G без -U, -P указывает файл, содержащий токен доступа Microsoft Entra (версии 17.8 и более поздних версий). Файл токена должен находиться в формате UTF-16LE (без BOM). Дополнительные сведения см. в разделе Аутентификация с помощью идентификатора Microsoft Entra в bcp.

-G

Область применения: База данных SQL Azure, Управляемый экземпляр SQL Azure, база данных SQL в Microsoft Fabric, Azure Synapse Analytics и SQL Server 2022 (16.x) и более поздние версии.

Этот параметр используется клиентом, чтобы указать, что пользователь проходит проверку подлинности с помощью идентификатора Microsoft Entra. Для -G этого параметра требуется bcp версии 14.0.3008.27 или более поздней версии. Чтобы определить версию, выполните bcp -v. Дополнительные сведения см. в статье Об использовании проверки подлинности Microsoft Entra с базой данных SQL или Azure Synapse Analytics или Об использовании проверки подлинности в базе данных SQL в Microsoft Fabric.

Полные сведения о проверке подлинности Microsoft Entra см. в bcpразделе "Проверка подлинности с помощью Microsoft Entra ID в bcp".

-D

Значение, переданное в параметр bcp -S, интерпретируется как имя источника данных (DSN). -D может отображаться в любом месте командной строки; Порядок относительно -S не имеет значения.

DSN можно использовать для следующих способов:

  • Внедрение параметров драйвера для упрощения командной строки.
  • Принудительное применение параметров драйвера, которые не доступны в командной строке, например MultiSubnetFailover.
  • Помогите защитить конфиденциальные учетные данные от обнаружения в качестве аргументов командной строки.

Дополнительные сведения см. в статье о поддержке DSN в sqlcmd и bcp.

application_intent

Объявляет тип рабочей нагрузки приложения при соединении с сервером. Единственное возможное значение — это ReadOnly. Если не указать -K, утилита bcp не поддерживает подключение к вторичной реплике в группе доступности Always On. Дополнительные сведения см. в разделе «Перенос рабочей нагрузки только для чтения на вторичную реплику группы доступности Always On».

-l login_timeout

Указывает время ожидания входа. Параметр -l указывает количество секунд до истечения времени ожидания входа в SQL Server при попытке подключения к серверу. Значение времени ожидания по умолчанию — 15 секунд. Время ожидания входа должно быть числом в диапазоне от 0 до 65 534. Если указанное значение не является числовым или не попадает в этот диапазон, bcp создает сообщение об ошибке. Значение 0 указывает на бесконечное время ожидания.

-H hostname_in_certificate

Указывает имя узла, используемое при проверке сертификата сервера. Используйте этот параметр, если имя сервера, используемое для подключения, не соответствует имени субъекта сертификата.

-J сертификат_сервера

Указывает путь к PEM-файлу, который содержит сертификат сервера для доверия для подключения.

-T

Указывает, что служебная программа bcp подключается к SQL Server через доверенное подключение с использованием интегрированной безопасности. Учетные данные безопасности сетевого пользователя, login_id и пароль не требуются. Если вы не указываете -T, необходимо указать -U и -P, чтобы успешно подключиться.

Important

Используйте -T только при подключении к SQL Server с интегрированным с Windows доверенным подключением. При подключении к База данных SQL Azure или Azure Synapse Analytics -T (встроенная проверка подлинности Windows) не поддерживается. Для проверки подлинности Microsoft Entra для служб Azure или SQL Server 2022 (16.x) и более поздних версий используйте -G (см. проверку подлинности с помощью идентификатора Microsoft Entra в bcp).

-Y[s|m|o]

Применяется к: bcp версии 18 и более поздних версий, которые поставляется с SQL Server 2025 (17.x).

Указывает, используются ли подключения с TLS-шифрованием через сеть. -Y может быть o (для Optional), m (для Mandatory, по умолчанию) или s (для Strict). Если вы не включаете -Y, то -Ym (для Mandatory) является значением по умолчанию.

-u

Применяется к: bcp версии 18 и более поздних версий, которые поставляется с SQL Server 2025 (17.x).

Сертификат сервера доверия. При использовании с параметром шифрования для подключения включает шифрование с помощью самозаверяющего сертификата сервера.

Представление данных

-c

Выполняет операцию, используя символьный тип данных. Этот параметр не запрашивает каждое поле. Он использует char в качестве типа хранилища без префиксов и использует \t (символ табуляции) в качестве разделителя полей и \r\n (новый символ) в качестве конца строки. -c несовместим с -w.

Дополнительные сведения см. в разделе "Использование формата символов для импорта или экспорта данных (SQL Server)".

Советы по лучшим практикам см. в разделе Режим символов и родной режим: рекомендации по лучшим практикам.

-C { ACP | OEM | RAW | code_page }

Применяется только к Windows. Не поддерживается в Linux и macOS.

Указывает кодовую страницу данных в файле данных. Аргументcode_page имеет смысл только в том случае, если данные содержат столбцы типа char, varcharили text с символами, коды которых больше 127 или меньше 32.

Укажите имя сортировки для каждого столбца в файле формата, за исключением случаев, когда параметр 65001 имеет приоритет над спецификацией параметров сортировки или кодовой страницы.

Значение кодовой страницы Описание
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Кодовая страница, используемая клиентом по умолчанию. Эта кодовая страница используется по умолчанию, если не указать -C.
RAW Преобразование из одной кодовой страницы в другую не выполняется. Этот параметр является самым быстрым, так как преобразование не выполняется.
<code_page> Конкретный номер кодовой страницы, например 850.

Версии до SQL Server 2016 (13.x) не поддерживают кодовую страницу 65001 (кодировка UTF-8). Версии, начиная с 13, могут импортировать кодировку UTF-8 в более ранние версии SQL Server.

-n

Выполняет операцию массового копирования, используя собственные типы данных (базы данных). Этот параметр не запрашивает каждое поле. В нем используются родные значения.

Дополнительные сведения см. в статье "Использование собственного формата для импорта или экспорта данных (SQL Server)".

Советы по лучшим практикам см. в разделе Режим символов и родной режим: рекомендации по лучшим практикам.

-N

Применяется только к Windows. Не поддерживается в Linux и macOS.

Выполняет операцию массового копирования, используя собственные типы данных (базы данных) для несимвольных данных и символы Юникода для символьных данных. Этот параметр предлагает более высокопроизводительную альтернативу параметру -w, а также предназначен для передачи данных из одного экземпляра SQL Server в другой с использованием файла данных. Он не запрашивает каждое поле. Используйте этот параметр при передаче данных, содержащих расширенные символы ANSI, и вы хотите воспользоваться преимуществами производительности собственного режима.

Дополнительные сведения см. в разделе Использование собственного формата Юникод для импорта и экспорта данных (SQL Server).

Если вы экспортируете, а затем импортируете данные в ту же схему таблицы с помощью bcp и -N, может появиться предупреждение об усечении, если имеется символьный столбец фиксированной длины, не поддерживающий Юникод (например, char(10)).

Предупреждение можно игнорировать. Одним из способов устранения этого предупреждения является использование -n вместо -Nэтого.

-w

Выполняет операцию массового копирования с помощью символов Юникода. Этот параметр не запрашивает каждое поле. В нем в качестве типа хранилища используется nchar, без префиксов, \t (символ табуляции) в качестве разделителя полей и \n (символ новой строки) в качестве конца строки. -w несовместим с -c.

Дополнительные сведения см. в разделе "Использование формата символов Юникода" для импорта или экспорта данных (SQL Server).

-z

Применяется только к: bcp (ODBC), Linux и macOS. Windows не поддерживается.

Включает поддержку типа векторных данных в служебной программе bcp . Эта функция в настоящее время отключена по умолчанию. При отключении векторные данные импортируются или экспортируются в виде строк массива с плавающей запятой JSON. При включении и при подключении к SQL Server 2025 (17.x) и более поздним версиям векторные данные импортируются или экспортируются в собственном векторном двоичном формате.

Используется -z0 для float32 поддержки векторов и -z1 для float16 поддержки векторов. В настоящее время ODBC не поддерживает -z1.

Форматирование файлов

-f format_file

Указывает полный путь к файлу форматирования. Значение этого параметра зависит от среды, в которой она используется, как показано ниже.

  • При использовании -f с параметром format для указанной таблицы или представления создается указанный format_file . Чтобы создать XML-файл форматирования, также укажите -x параметр. Дополнительные сведения см. в статье "Создание файла форматирования с помощью bcp (SQL Server)".

  • При использовании -f с параметром in или out требуется существующий файл формата.

    Note

    Использование файла форматирования с in параметром или out параметром является необязательным. Если вы не указываете параметр -f и не указываете -n, -c, -w или -N, команда запрашивает информацию о формате и позволяет сохранить ваши ответы в файле формата. Имя bcp.fmtфайла по умолчанию .

Если format_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -f format_file значением.

-x

Применяется только к Windows. Не поддерживается в Linux и macOS.

Используйте этот параметр с параметрами format-f. Он создает файл в формате XML вместо файла в формате по умолчанию, который не является XML. Этот -x параметр не работает при импорте или экспорте данных. Он создает ошибку, если используется без обоих format и -fformat_file.

Пакетная обработка и производительность

-a packet_size

Указывает количество байтов на сетевой пакет, который клиент отправляет и получает от сервера. Задайте этот параметр конфигурации сервера с помощью SQL Server Management Studio или системной sp_configure хранимой процедуры. Однако можно переопределить параметр конфигурации сервера отдельно с помощью этого параметра. packet_size может быть от 4096 байт до 65 535 байт. Значение по умолчанию — 4096.

Увеличение размера пакета может повысить производительность операций массового копирования. Если вы запрашиваете больший пакет, но сервер не может предоставить его, используется значение по умолчанию. Статистика производительности, которая генерирует служебная bcp программа, отображает используемый размер пакета.

batch_size

Указывает количество строк в каждом пакете импортированных данных. Каждый пакет импортируется и регистрируется как отдельная транзакция, которая импортирует весь пакет, прежде чем быть зафиксированной. По умолчанию bcp импортирует все строки в файле данных в виде одного пакета. Чтобы распределить строки между несколькими пакетами, укажите значение batch_size меньшее, чем количество строк в файле данных. Если транзакция пакета завершится неудачно, то будет выполнен откат только операций вставки в текущем пакете. Пакеты, уже импортированные зафиксированными транзакциями, не влияют на последующий сбой.

-b и -h "ROWS_PER_BATCH=<bb>" подсказка являются взаимоисключающими. Используйте -b, если хотите, чтобы bcp явно управлял пакетной обработкой, или используйте ROWS_PER_BATCH, чтобы подсказать оптимизатору сервера при отправке данных как одной транзакции.

-h "подсказка [, ... n]"

Применяется только к Windows. Не поддерживается в Linux и macOS.

Указывает указание или подсказки для использования во время массового импорта данных в таблицу или представление.

  • ORDER (столбец [ASC | DESC] [, ...n])

    Порядок сортировки данных в файле данных. Производительность массового импорта улучшается, если импортируемые данные сортируются в соответствии с кластеризованным индексом в таблице, если таковые есть. Если файл данных отсортирован в другом порядке, то есть, отличный от порядка кластеризованного ключа индекса, или если в таблице нет кластеризованного индекса, предложение ORDER игнорируется. Имена столбцов, которые вы указали, должны быть допустимыми именами столбцов в целевой таблице. По умолчанию предполагается, bcp что файл данных не упорядочен. Для оптимизированного массового импорта ядро СУБД также проверяет, что импортированные данные отсортированы.

  • ROWS_PER_BATCH = bb

    Количество строк данных в каждом пакете (bb). Используется, если не указать -b, в результате чего весь файл данных отправляется серверу в виде одной транзакции. Сервер оптимизирует массовую загрузку в соответствии со значением bb. По умолчанию ROWS_PER_BATCH неизвестно.

  • KILOBYTES_PER_BATCH = cc

    Приблизительный объем данных в каждом пакете в килобайтах (значение cc). По умолчанию KILOBYTES_PER_BATCH неизвестно.

  • TABLOCK

    Указывает, что блокировка на уровне таблицы массового обновления устанавливается во время операции массовой загрузки; в противном случае блокировка на уровне строк устанавливается. Это указание значительно повышает производительность, так как удержание блокировки во время выполнения операции массового копирования уменьшает конкуренцию за блокировки на таблице. Вы можете загрузить таблицу одновременно из нескольких клиентов, если таблица не имеет индексов и TABLOCK не указана. По умолчанию параметр table lock on bulkload таблицы определяет поведение блокировки. Подробную информацию см. в разделе sp_tableoption.

    Note

    Если целевая таблица имеет кластерную columnstore-индексацию, указание TABLOCK не требуется для загрузки несколькими параллельными клиентами, так как каждому параллельному потоку назначается отдельная группа строк в индексе и загружает данные в неё. Дополнительные сведения см. в разделе "Индексы Columnstore: обзор".

  • CHECK_CONSTRAINTS

    Указывает, что при выполнении операции массового импорта будет выполняться проверка всех ограничений целевой таблицы или представления. Без подсказки CHECK_CONSTRAINTS любые ограничения CHECK и FOREIGN KEY игнорируются, и после операции ограничение на таблице помечается как недоверенное.

    Note

    UNIQUE, PRIMARY KEYи NOT NULL ограничения всегда применяются.

    В какой-то момент необходимо проверить ограничения для всей таблицы. Если таблица не была пустой до операции массового импорта, стоимость повторной проверки ограничения может превысить стоимость применения ограничений CHECK к инкрементным данным. Поэтому обычно можно включить проверку ограничений во время добавочного массового импорта.

    Отключение проверки ограничений (настройка по умолчанию) может потребоваться в тех ситуациях, когда входные данные содержат строки, нарушающие эти ограничения. Отключив CHECK ограничения, можно импортировать данные, а затем использовать инструкции Transact-SQL для удаления недопустимых данных.

    Note

    Параметр -mmax_errors не применяется к проверке ограничений.

  • FIRE_TRIGGERS

    При указании этого параметра с в аргументе, все триггеры вставки, определенные в целевой таблице, запускаются во время операции массового копирования. Если не указать FIRE_TRIGGERS, триггеры вставки не выполняются. FIRE_TRIGGERS игнорируется для аргументов out, queryoutи format.

-m максимальное_число_ошибок

Указывает максимальное количество синтаксических ошибок, которые могут возникнуть до отмены операции bcp. Синтаксическая ошибка подразумевает ошибку преобразования данных в целевой тип данных. Общий max_errors исключает все ошибки, которые сервер может обнаруживать только, например нарушения ограничений.

Строка, которую bcp программа не может скопировать, игнорируется и считается одной ошибкой. Если этот параметр не включен, значение по умолчанию равно 10.

Note

Параметр -m не применяется при преобразовании типов данных money или bigint .

-F первая_строка

Указывает номер первой строки для экспорта из таблицы или импорта из файла данных. Для этого параметра требуется значение больше (>) 0, но меньше (<) или равно общему количеству строк. Если этот параметр не указан, по умолчанию используется первая строка файла.

Параметрfirst_row может иметь положительное целое значение до 2^63-1. -F first_row использует нумерирование на основе 1.

-L последняя_строка

Указывает номер последней строки для экспорта из таблицы или импорта из файла данных. Для этого параметра требуется значение больше (>) 0, но меньше (<) или равно числу последней строки. Если этот параметр не указан, по умолчанию используется последняя строка файла.

Параметрlast_row может иметь положительное целое значение до 2^63-1.

-r row_term

Указывает разделитель строки. Значение по умолчанию — \n (символ перехода на новую строку). Используйте этот параметр, чтобы переопределить разделитель строк по умолчанию. Дополнительные сведения см. в разделе "Указание терминаторов полей и строк" (SQL Server).

Если указать терминатор строки в шестнадцатеричном формате в команде bcp, значение усекается на 0x00. Например, если указать 0x410041, 0x41 используется.

Если row_term начинается с дефиса (-) или косой черты (/), не включайте пробел между -r и значением row_term.

-t field_term

Указывает разделитель поля. Значение по умолчанию — \t (символ табуляции). Используйте этот параметр, чтобы переопределить разделитель полей по умолчанию. Дополнительные сведения см. в разделе "Указание терминаторов полей и строк" (SQL Server).

Если указать терминатор поля в шестнадцатеричном формате в команде bcp, значение усекается до 0x00. Например, если указать 0x410041, 0x41 используется.

Если field_term начинается с дефиса (-) или косой черты (/), не включайте пробел между -t и значением field_term.

Обработка значений

-k

Указывает, что пустые столбцы сохраняют значение NULL во время операции, а не вставлять значения по умолчанию для столбцов. Дополнительные сведения см. в разделе "Сохранение значений NULL" или значений по умолчанию во время массового импорта (SQL Server).

-E

Указывает, что операция использует значения идентификатора в импортируемом файле данных для столбца идентификатора. Если не указать -E, ядро СУБД игнорирует значения идентичности для этого столбца в импортируемом файле данных и автоматически присваивает уникальные значения на основе заданных при создании таблицы seed и increment. Дополнительные сведения см. в статье DBCC CHECKIDENT.

Если файл данных не содержит значения столбца удостоверений в таблице или представлении, используйте файл форматирования, чтобы указать, что столбец удостоверений в таблице или представлении должен пропускаться при импорте данных. ядро СУБД автоматически присваивает уникальные значения столбцу.

Параметр -E имеет особые требования к разрешениям. Для получения дополнительной информации см. Примечания позже в этой статье.

Операции ввода-вывода и ведение журнала файлов

-i input_file

Применяется только к Windows. Не поддерживается в Linux и macOS.

Указывает имя файла ответа. Файл содержит ответы на вопросы командной строки для каждого поля данных при выполнении операции массового копирования с помощью интерактивного режима (-n, -c-wили -N не указано).

Если input_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -i и значением input_file.

-o файл_вывода

Применяется только к Windows. Не поддерживается в Linux и macOS.

Указывает имя файла, который принимает перенаправленные из командной строки выходные данные.

Если output_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -o и значением output_file.

-e err_file

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

Если err_file начинается с дефиса (-) или косой черты (/), не включайте пробел между -e и значением err_file.

Совместимость и управление версиями

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

Применяется только к Windows. Не поддерживается в Linux и macOS.

Выполняет операцию массового копирования с помощью типов данных из более ранней версии SQL Server. Этот параметр не запрашивает каждое поле; он использует значения по умолчанию.

  • 80= SQL Server 2000 (8.x)
  • 90= SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) и SQL Server 2008 R2 (10.50.x)
  • 110= SQL Server 2012 (11.x)
  • 120= SQL Server 2014 (12.x)
  • 130= SQL Server 2016 (13.x)
  • 140= SQL Server 2017 (14.x)
  • 150= SQL Server 2019 (15.x)
  • 160= SQL Server 2022 (16.x)
  • 170= SQL Server 2025 (17.x)

Например, чтобы создать данные для типов, которые SQL Server 2000 (8.x) не поддерживает, но которые были добавлены в более поздних версиях, используйте -V80.

Дополнительные сведения см. в разделе "Импорт данных собственного и символьного формата" из предыдущих версий SQL Server.

Прочие параметры

-R

Указывает, что bcp утилита массово копирует данные валюты, даты и времени в ядро СУБД с использованием регионального формата, определённого для настройки локализации клиентского компьютера. По умолчанию bcp игнорируется региональные параметры.

-v

bcp Сообщает номер версии служебной программы и авторские права.

Замечания

  • Программа bcp отображает только первые 512 байт сообщения об ошибке.
  • Утилита поддерживает нативные bcp файлы данных, совместимые со всеми поддерживаемыми версиями ядро СУБД.
  • bcp сейчас доступен в режиме предварительной версии в Warehouse в Microsoft Fabric.
  • bcpНе удается импортировать данные в конечную точку аналитики SQL в Microsoft Fabric.

Permissions

Для операции bcp out требуется разрешение SELECT на исходной таблице.

Для bcp in операции минимально требуются разрешения SELECT и INSERT на целевой таблице. Кроме того, ALTER TABLE разрешение требуется, если одно из следующих условий является истинным:

  • Существуют ограничения, а подсказка CHECK_CONSTRAINTS не указана.

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

  • Триггеры существуют, и подсказка FIRE_TRIGGERS не указана.

    Триггеры не срабатывают по умолчанию. Для явного срабатывания триггеров используйте опцию -h с подсказкой FIRE_TRIGGERS.

  • Вы используете -E опцию для импорта значений идентификаторов из файла данных.

Получите помощь

Примите участие в разработке документации по SQL

Знаете ли вы, что содержимое SQL можно изменить самостоятельно? При этом вы не только помогаете улучшить нашу документацию, но и получаете признание в качестве участника страницы.

Дополнительные сведения см. в разделе Редактирование документации Microsoft Learn.