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

Применимо к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)База данных SQL в Microsoft Fabric

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

Используйте служебную программу bcp , чтобы импортировать большое количество новых строк в таблицы SQL Server или экспортировать данные из таблиц в файлы данных. За исключением случаев использования с параметром 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

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"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -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 ]

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

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

Параметр командной строки Поддерживается в Windows Поддерживается в Linux и macOS
Режим объекта и передачи
[database_name.]схема.{table_name | view_name | "query"} Да Да
{вdata_file | outdata_file | queryoutdata_file | format nul} Да Да
-q Да Да
Подключение и проверка подлинности
-S [server_name[\instance_name]] Да Да
-d database_name Да Да
-U login_id Да Да
- P-пароль Да Да
Проверка подлинности Microsoft Entra Да Да
-D Да Да
-K application_intent Да Да
-l login_timeout Да Да
-T Да Да
-Y[s| m| o] Да 1 Да 1
Представление данных
-c Да Да
-C { ACP | OEM | RAW | code_page } Да Нет
-n Да Да
-N Да Нет
-w Да Да
-z Нет Да 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 указывать не обязательно, если пользователь, выполняющий операцию, является владельцем указанной таблицы или представления. Если схема не указана, и пользователь, выполняющий операцию, не владеет указанной таблицей или представлением, SQL Server возвращает сообщение об ошибке, а операция отменяется.

table_name

Имя целевой таблицы при импорте данных в SQL Server (in) и исходную таблицу при экспорте данных из SQL Server (out).

view_name

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

"query"

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

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

в

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

выход

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

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

data_file

Полный путь к файлу данных. При массовом импорте данных в SQL Server файл данных содержит данные для копирования в указанную таблицу или представление. При массовом экспорте данных из SQL Server файл данных содержит данные, скопированные из таблицы или представления. Путь может содержать от 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 и экземпляром SQL Server. Используйте этот параметр для указания базы данных, владельца, таблицы или имени представления, содержащих пробел или одинарную кавычку. Заключите всю трехчастную таблицу или название представления в кавычки ("").

Чтобы указать имя базы данных, содержащее пробел или одиночную кавычку, необходимо использовать опцию -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>.

-d database_name

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

-U login_id

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

- P-пароль

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

Important

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

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

Если пароль начинается с дефиса (-) или косой черты (/), не добавляйте пробел между -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 в bcp.

-D

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

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

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

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

application_intent

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

-l login_timeout

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

-T

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

Important

Используйте -T только при подключении к SQL Server с интегрированным с Windows доверенным подключением. При подключении к Azure SQL Database или 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).

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

-w

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

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

-z

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

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

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

-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 , отображает используемый размер пакета.

-b 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 предполагает, что файл данных не упорядочен. Для оптимизированного массового импорта SQL Server также проверяет, отсортированы ли импортированные данные.

  • 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, SQL Server игнорирует значения идентификаторов этого столбца в импортируемом файле данных и автоматически назначает уникальные значения на основе начального значения и шага, указанных во время создания таблицы. Дополнительные сведения см. в статье DBCC CHECKIDENT.

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

Параметр -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 массово копирует данные валюты, даты и времени в SQL Server с помощью регионального формата, определенного для параметра языкового стандарта клиентского компьютера. По умолчанию bcp игнорирует региональные параметры.

-v

Выводит номер версии и сведения об авторских правах для служебной программы bcp .

Замечания

  • Программа bcp поддерживает собственные файлы данных, совместимые со всеми поддерживаемыми версиями SQL Server.

  • Программа bcp отображает только первые 512 байт сообщения об ошибке.

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.