Программа bcp

Изменения: 12 декабря 2006 г.

Программа bcp используется для массового копирования данных между экземпляром Microsoft SQL Server 2005 и файлом данных в пользовательском формате. С помощью программы bcp можно выполнять импорт большого количества новых строк в таблицы SQL Server или экспорт данных из таблиц в файлы данных. За исключением случаев использования параметра queryout, применение программы не требует знания языка Transact-SQL. Чтобы выполнить импорт данных в таблицу, необходимо или использовать файл форматирования, созданный для этой таблицы, либо изучить структуру таблицы и типов данных, допустимых для ее столбцов.

Значок ссылки на раздел Сведения о синтаксических обозначениях в программе bcp см. в разделе Программы командной строки.

Синтаксис

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-mmax_errors] [-fformat_file] [-x] [-eerr_file]
    [-Ffirst_row] [-Llast_row] [-bbatch_size]
    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6] 
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] 
    [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
    [-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Аргументы

  • database_name
    Имя базы данных, в которой находится указанная таблица или представление. Эта база данных будет по умолчанию использоваться для пользователя, если не указано иное.
  • owner
    Имя владельца таблицы или представления. Можно не указывать параметр owner, если пользователь, выполняющий операцию, является владельцем указанной таблицы или представления. SQL Server 2005 вернет сообщение об ошибке и операция завершится, если параметр owner не указан, а пользователь, выполняющий операцию, не является владельцем указанной таблицы или представления.
  • table_name
    Имя целевой таблицы при импорте данных в SQL Server (in) или исходной таблицы при экспорте данных из SQL Server (out).
  • view_name
    Имя целевого представления при копировании данных в SQL Server (in) или представления источника при копировании данных из SQL Server (out). В качестве целевых представлений могут выступать только те представления, в которых все столбцы ссылаются на одну таблицу. Дополнительные сведения об ограничениях, накладываемых на копирование данных в представления, см. в разделе INSERT (Transact-SQL).
  • "query"
    Запрос на языке Transact-SQL, который возвращает результирующий набор. Если запрос возвращает несколько результирующих наборов, например инструкцию SELECT, содержащую предложение COMPUTE, то в файл данных копируется только первый результирующий набор. Все последующие результирующие наборы не учитываются. Используйте двойные кавычки для запроса и одинарные кавычки для выражений, содержащихся в запросе. При выполнении массового копирования данных из запроса необходимо также указывать аргумент queryout.
  • in | out | queryout | format
    Указывает направление массового копирования следующим образом:

    • in — выполняется копирование из файла в таблицу базы данных или представление;
      ms162802.note(ru-ru,SQL.90).gifПримечание.
      Программа bcp, поставляемая вместе с SQL Server 6.5, не поддерживает массовое копирование в таблицы, содержащие типы данных sql_variant или bigint.
    • out — выполняется копирование из таблицы базы данных или представления в файл; При извлечении данных обратите внимание, что программа bcp представляет пустую строку как строку NULL, а строку NULL как пустую строку.
    • queryout — выполняется копирование из запроса. Этот аргумент может быть указан только при выполнении массового копирования данных из запроса;
    • format — создается файл форматирования, основанный на указанных параметрах (-n, -c, -w, -6 или -N) и разделителях таблиц или представлений. При выполнении массового копирования данных команда bcp может обратиться к файлу форматирования, что позволяет избежать повторного ввода данных о формате в интерактивном режиме. Параметр format требует наличия параметра -f. Для создания XML-файла форматирования также необходим параметр -x. Дополнительные сведения см. в разделе Создание файла форматирования.
  • data_file
    Полный путь файла данных. После выполнения массового импорта данных в SQL Server файл данных содержит данные, которые будут скопированы в указанную таблицу или представление. После выполнения массового экспорта данных из SQL Server файл данных содержит данные, скопированные из таблицы или представления. Путь может содержать от 1 до 255 символов. Файл данных может содержать максимум 2 147 483 647 строк.

    ms162802.note(ru-ru,SQL.90).gifВажно!
    В качестве значения параметра format необходимо указать nul: data_file (formatnul).
  • -mmax_errors
    Указывает максимальное количество синтаксических ошибок, которые могут произойти до отмены операции программы bcp. Синтаксическая ошибка подразумевает ошибку преобразования данных в тип данных назначения. В общее количество ошибок max_errors не включаются ошибки, которые могут быть обнаружены только на сервере, например нарушения ограничений.

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

    ms162802.note(ru-ru,SQL.90).gifПримечание.
    Параметр -m также не применяется для преобразования типов данных money или bigint.
  • -fformat_file
    Задает полный путь к файлу форматирования. Назначение этого параметра зависит от окружения, в котором он используется (см. далее):

    • если -f используется с параметром format, для указанной таблицы или представления создается файл с именем format_file. Чтобы создать XML-файл форматирования, также укажите параметр -x; Дополнительные сведения см. в разделе Создание файла форматирования.
    • при использовании -f вместе с параметром in или out необходим существующий файл форматирования.
      ms162802.note(ru-ru,SQL.90).gifПримечание.
      Необязательно использовать файл форматирования с параметрами in или out. Если отсутствует параметр -f и не указаны параметры -n, -c, -w, -6 или -N, то команда запрашивает сведения о форматировании и позволяет сохранить ответы в файле форматирования (имя файла по умолчанию Bcp.fmt).
  • -x
    Используется вместе с параметрами format и -fformat_file, приводит к созданию файла форматирования на основе XML. По умолчанию создается файл в формате, отличном от XML. Параметр -x не работает при импорте или экспорте данных. Применение этого параметра без параметров format и -fformat_file приведет к ошибке.

    ms162802.note(ru-ru,SQL.90).gifПримечание.
    Для применения параметра -x необходимо использовать клиент bcp 9.0. Дополнительные сведения об использовании клиента bcp 9.0 см. в приведенном ниже разделе «Примечания».
  • -eerr_file
    Указывает полный путь файла ошибок, используемого для хранения строк, которые программа bcp не может передать из файла в базу данных. Сообщения об ошибках команды bcp поступают на рабочую станцию пользователя. Если этот параметр не используется, то файл ошибки не создается.
  • -Ffirst_row
    Указывает номер первой строки для экспорта из таблицы или импорта из файла данных. Значение параметра должно быть больше (>) 0, но меньше (<) или равно (=) общему количеству строк. Если параметр отсутствует, по умолчанию используется первая строка файла.
  • -Llast_row
    Указывает номер последней строки для экспорта из таблицы или импорта из файла данных. Значение параметра должно быть больше (>) 0, но меньше (<) или равно (=) номеру последней строки. Если параметр отсутствует, по умолчанию используется последняя строка файла.
  • -bbatch_size
    Указывает количество строк в каждом пакете импортированных данных. Каждый пакет импортируется и регистрируется как отдельная транзакция, которая фиксируется после выполнения импорта всего пакета. По умолчанию импорт всех строк в файле данных выполняется в одном пакете. Чтобы распределить строки между несколькими пакетами, укажите значение batch_size меньше, чем количество строк в файле данных. Если транзакция пакета завершится неудачно, то будет выполнен откат только операций вставки в текущем пакете. Произошедшая ошибка не затрагивает пакеты, импорт которых уже выполнен зафиксированными транзакциями.

    Не применяйте этот параметр вместе с параметром **h"**ROWS_PER_BATCH =bb".

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

  • -c
    Выполняет операцию, используя символьный тип данных. При использовании этого параметра не запрашивается тип данных каждого поля. Для хранения данных используется тип char, префиксы отсутствуют, в качестве разделителя полей используется символ табуляции \t, а в качестве признака конца строки — символ новой строки \r\n.

    Дополнительные сведения см. в разделе Применение символьного формата при импорте и экспорте данных.

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

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

  • -w
    Выполняет операцию массового копирования, используя символы Юникода. При использовании этого параметра не запрашивается тип данных каждого поля, для хранения данных используется тип nchar, отсутствуют префиксы, в качестве разделителя полей используется символ табуляции \t, а в качестве признака конца строки — символ новой строки \n. Этот параметр не может использоваться с SQL Server 6.5 или более ранними версиями.

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

  • -V ( 60| 65| 70| 80)
    Выполняет операцию массового копирования, используя типы данных более ранней версии SQL Server. Этот параметр не запрашивает тип данных каждого поля, он использует значения по умолчанию. Например, чтобы выполнить массовое копирование данных в форматах даты, поддерживаемых программой bcp, поставляемой с SQL Server 6.5 (но более не поддерживаемых ODBC) в SQL Server 2005, используйте параметр -V65.

    ms162802.note(ru-ru,SQL.90).gifВажно!
    При выполнении массового экспорта данных из SQL Server в файл данных программа bcp не создает форматы даты SQL Server 6.0 или SQL Server 6.5 для типов данных datetime или smalldatetime даже в случае указания -V. Даты всегда записываются в формате ODBC. Кроме того, значения NULL в битовых столбцах записываются как значения 0, так как в SQL Server 6.5 и более ранних версиях не поддерживается значение NULL для типа данных bit.

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

  • -6
    Выполняет операцию массового копирования, используя типы данных SQL Server 6.0 или SQL Server 6.5. Этот параметр поддерживается только для совместимости с более ранними версиями. Для SQL Server 7 и более поздних версий вместо него применяйте параметр -V.
  • -q
    Выполняет инструкцию SET QUOTED_IDENTIFIERS ON в соединении между программой bcp и экземпляром SQL Server. Используйте этот параметр для указания базы данных, владельца, таблицы или имени представления, содержащих пробел или одинарную кавычку. Заключите все имя таблицы или представления, состоящее из трех частей, в кавычки ("").

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

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

  • -C { ACP | OEM | RAW | code_page }
    Поддерживается в целях совместимости с более ранними версиями SQL Server. Для SQL Server 7.0 и более поздних версий корпорация Майкрософт рекомендует указывать в файле форматирования имя параметров сортировки для каждого столбца.

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

    Значение кодовой страницы Описание

    ACP

    ANSI/MicrosoftWindows (ISO 1252).

    OEM

    Кодовая страница, используемая клиентом по умолчанию. Это — кодовая страница, используемая по умолчанию, если не указан параметр -C.

    RAW

    Преобразование из одной кодовой страницы в другую не выполняется. Этот параметр обеспечивает высокую производительность, так как преобразование не выполняется.

    code_page

    Определенный номер кодовой страницы, например 850.

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

  • -tfield_term
    Указывает признак конца поля. Значение по умолчанию — символ табуляции \t. Используйте этот параметр, чтобы изменить признак конца поля по умолчанию. Дополнительные сведения см. в разделе Определение признаков конца поля и строки.
  • -rrow_term
    Указывает признак конца строки. Значение по умолчанию — символ новой строки \n. Используйте этот параметр, чтобы изменить признак конца строки. Дополнительные сведения см. в разделе Определение признаков конца поля и строки.
  • -iinput_file
    Указывает имя файла ответов, содержащего ответы на вопросы командной строки для каждого поля данных при выполнении массового копирования в интерактивном режиме (когда не указаны параметры -n, -c, -w, -6 или -N).
  • -ooutput_file
    Указывает имя файла, который принимает перенаправленные из командной строки выходные данные.
  • -apacket_size
    Указывает число байтов в каждом сетевом пакете, отправляемом от сервера и к серверу. Параметр конфигурации сервера можно задать с помощью среды SQL Server Management Studio (или системной хранимой процедуры sp_configure). Однако параметр конфигурации сервера в отдельных случаях можно изменить с помощью этого параметра. Значение packet_size может лежать в пределах от 4 096 до 65 535 байт, значение по умолчанию равно 4 096.

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

  • -Sserver_name[ **\instance_name]
    Указывает экземпляр SQL Server, к которому выполняется подключение. Если сервер не указан, то программа bcp выполняет подключение к экземпляру SQL Server по умолчанию на локальном компьютере. Этот параметр необходим, когда команда bcp запускается из удаленного компьютера в сети или из локального именованного экземпляра. Чтобы подключиться к экземпляру по умолчанию SQL Server на сервере, укажите только server_name. Чтобы подключиться к именованному экземпляру SQL Server 2005, укажите server_name
    \**instance_name.
  • -Ulogin_id
    Указывает идентификатор входа, используемый для соединения с SQL Server.

    ms162802.security(ru-ru,SQL.90).gifПримечание безопасности.
    Если программа bcp подключается к SQL Server с помощью доверенного соединения, используя встроенную безопасность, применяйте параметр -T (доверенное соединение) вместо комбинации user name и password.
  • -Ppassword
    Указывает пароль для идентификатора входа. Если этот параметр не используется, то программа bcp запрашивает пароль. Если этот параметр используется в конце командной строки без пароля, то программа bcp использует пароль по умолчанию (NULL).

    ms162802.security(ru-ru,SQL.90).gifПримечание безопасности.
    Не используйте пустые пароли. Выбирайте надежные пароли.

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

  • -T
    Указывает, что программа bcp выполняет подключение к SQL Server по доверенному соединению с помощью встроенной безопасности. Не требуются учетные данные безопасности для сетевого пользователя, параметры login_id и password. Если параметр –T не указан, для входа необходимо указать –U и –P.
  • -v
    Выводит номер версии и сведения об авторских правах для программы bcp.
  • -R
    Указывает, что массовое копирование в SQL Server данных в денежном формате, в формате даты и времени выполняется с помощью регионального формата, определенного настройками языкового стандарта клиентского компьютера. По умолчанию региональные настройки не учитываются.
  • -E
    Указывает, что одно или несколько значений идентификаторов в импортированном файле данных должны использоваться для столбца идентификаторов. Если аргумент -E не указан, то значения идентификатора для этого столбца в импортируемом файле данных не учитываются, и SQL Server 2005 автоматически назначает уникальные значения на основе начального числа и значения приращения, указанных во время создания таблицы.

    Если файл данных не содержит значений для столбца идентификаторов в таблице или представлении, то с помощью файла форматирования укажите, что столбец идентификаторов в таблице или представлении должен быть пропущен при импорте данных. SQL Server 2005 автоматически присвоит столбцу уникальные значения. Дополнительные сведения см. в разделе DBCC CHECKIDENT (Transact-SQL).

    Для параметра -E необходимы специальные разрешения. Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.

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

  • **-h"**hint[ ,... n] "
    Указывает одну или несколько подсказок для использования во время выполнения массового импорта данных в таблицу или представление. Этот параметр не может использоваться при выполнении массового копирования данных в SQL Server 6.x или более ранней версии.

    • ORDER**(column[ASC | DESC] [,...n])**
      Порядок сортировки данных в файле данных. Производительность массового импорта увеличивается при сортировке импортируемых данных согласно кластеризованному индексу таблицы, если он есть. Если файл данных отсортирован в порядке, отличном от порядка ключа кластеризованного индекса, или если в таблице отсутствует кластеризованный индекс, то предложение ORDER пропускается. Для столбцов в целевой таблице необходимо указывать допустимые имена столбцов. По умолчанию программа bcp предполагает, что файл данных не упорядочен. Кроме того, для оптимизированного массового импорта SQL Server выполняет проверку сортировки импортированных данных.

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

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

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

    • TABLOCK
      Указывает, что при выполнении массового обновления на период операции массовой загрузки будет получена блокировка на уровне таблицы. В противном случае запрашивается блокировка на уровне строки. Применение этой подсказки значительно повышает производительность, так как удержание блокировки в течение операции массового копирования уменьшает вероятность конфликтов блокировок в таблице. Таблица может загружаться одновременно несколькими клиентами, если она не содержит индексов и указан параметр TABLOCK. По умолчанию работа блокировки определяется параметром таблицы table lock on bulk load.

      Дополнительные сведения см. в разделе Управление блокировкой при массовом импорте.

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

      ms162802.note(ru-ru,SQL.90).gifПримечание.
      Ограничения UNIQUE, PRIMARY KEY и NOT NULL проверяются в любом случае.

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

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

      ms162802.note(ru-ru,SQL.90).gifПримечание.
      В SQL Server 2005 программа bcp запускает новые проверки данных, которые могут привести к ошибкам в работе существующих сценариев с недопустимыми данными в файле данных.
      ms162802.note(ru-ru,SQL.90).gifПримечание.
      Ключ -mmax_errors не применяется при проверке ограничений.

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

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

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

Замечания

Клиент bcp 9.0 устанавливается при установке в системе средств Microsoft SQL Server. Если установлены как средства SQL Server 2005, так и средства SQL Server 2000, то в зависимости от значения переменной среды PATH вместо bcp 9.0 необходимо использовать более раннюю версию клиента bcp. Переменная среды определяет набор каталогов, используемых Windows для поиска исполняемых файлов. Чтобы определить применяемую версию, запустите в командной строке Windows команду bcp/v. Сведения о настройке пути для команды в переменной среды PATH см. в справке Windows.

XML-файлы форматирования поддерживаются только при установке средств SQL Server вместе с собственным клиентом SQL.

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

Сведения о подготовке данных к операциям массового импорта и экспорта см. в разделе Подготовка данных к массовому экспорту или импорту.

Сведения о том, когда в журнале транзакций регистрируются операции вставки строк, выполняемые при массовом импорте, см. в разделе Предварительные условия для минимального ведения журнала массового импорта данных.

Вычисляемые столбцы и столбцы типа timestamp

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

При массовом копировании вычисляемые столбцы и столбцы типа timestamp копируются из SQL Server в файл данных обычным способом.

Указание идентификаторов, содержащих пробелы или кавычки

Идентификаторы SQL Server могут содержать такие символы, как внутренние пробелы и кавычки. Такие идентификаторы должны обрабатываться следующим образом.

  • Если идентификатор или имя файла содержит пробел или кавычку в командной строке, заключите идентификатор в двойные кавычки ("").
    Например, следующая команда bcp out создает файл данных с именем Currency Types.dat:

    bcp AdventureWorks.Sales.Currency out "Currency Types.dat" -T -c
    
  • Чтобы указать имя базы данных, содержащее пробел или кавычки, необходимо использовать параметр q.

  • Для имен владельца, таблицы или представления, содержащих внутренние пробелы или кавычки, также можно:

    • указать параметр -q или
    • заключить имя владельца, таблицы или представления в квадратные скобки ([]) внутри кавычек.

Проверка данных

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

  • Собственные представления типов данных float или real являются допустимыми.
  • данные в Юникоде имеют четную длину в байтах.

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

Массовый экспорт или импорт документов SQLXML

Для массового экспорта или импорта данных SQLXML в файле форматирования следует использовать один из следующих типов данных:

Тип данных Эффект

SQLCHAR или SQLVARYCHAR

Данные отправляются в формате кодовой страницы клиента или кодовой страницы, определенной параметрами сортировки). Результат тот же, что и при указании ключа -c без определения файла форматирования.

SQLNCHAR или SQLNVARCHAR

Данные отправляются в Юникоде. Эффект тот же, что и при указании ключа -w без определения файла форматирования.

SQLBINARY или SQLVARYBIN

Данные отправляются без преобразования.

Разрешения

Для операции bcpout необходимо разрешение SELECT для исходной таблицы.

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

  • Ограничения существуют, а подсказка CHECK_CONSTRAINTS не указана.
    ms162802.note(ru-ru,SQL.90).gifПримечание.
    По умолчанию ограничения отключены. Чтобы явно включить ограничения, используйте параметр -h с подсказкой CHECK_CONSTRAINTS.
  • Триггеры существуют, а подсказка FIRE_TRIGGER не указана.
    ms162802.note(ru-ru,SQL.90).gifПримечание.
    По умолчанию запуск триггеров не происходит. Чтобы запустить триггеры явно, используйте параметр -h с подсказкой FIRE_TRIGGERS.
  • Используйте аргумент -E, чтобы выполнить импорт значений идентификаторов из файла данных.
ms162802.note(ru-ru,SQL.90).gifПримечание.
Необходимость наличия разрешения ALTER TABLE на целевую таблицу является новой особенностью SQL Server 2005. Если у учетной записи пользователя нет разрешений ALTER для целевой таблицы, это новое требование может привести к ошибке сценариев bcp, не устанавливающих триггеры и проверки ограничений.

Примеры

Этот раздел содержит следующие примеры.

  • А. Копирование строк таблицы в файл данных (с помощью доверенного соединения)
  • Б. Копирование строк таблицы в файл данных (в смешанном режиме проверки подлинности)
  • В. Копирование данных из файла в таблицу
  • Г. Копирование отдельного столбца в файл данных
  • Д. Копирование отдельной строки в файл данных
  • Е. Копирование данных из запроса в файл данных
  • Ж. Создание файла форматирования в формате, отличном от XML
  • З. Создание XML-файла форматирования
  • И. Применение файла форматирования для выполнения массового импорта данных с помощью программы bcp

А. Копирование строк таблицы в файл данных (с помощью доверенного соединения)

Следующий пример иллюстрирует применение параметра out к таблице AdventureWorks.Sales.Currency. В этом примере создается файл данных с именем Currency.dat и в него копируются данные таблицы в символьном формате. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке введите следующую команду:

bcp AdventureWorks.Sales.Currency out Currency.dat -T -c

Б. Копирование строк таблицы в файл данных (в смешанном режиме проверки подлинности)

Следующий пример иллюстрирует применение параметра out к таблице AdventureWorks.Sales.Currency. В этом примере создается файл данных с именем Currency.dat и в него копируются данные таблицы в символьном формате.

В этом примере предполагается, что используется смешанный режим проверки подлинности. Необходимо использовать параметр -U, чтобы указать идентификатор входа. Кроме того, за исключением случаев, когда выполняется соединение с экземпляром, не являющимся экземпляром SQL Server по умолчанию на локальном компьютере, нужно использовать параметр -S, чтобы указать системное имя и (при необходимости) имя экземпляра.

bcp AdventureWorks.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>

Система предложит ввести пароль.

В. Копирование данных из файла в таблицу

Следующий пример иллюстрирует применение параметра in с файлом, созданным в предыдущем примере (Currency.dat). Тем не менее, сначала в этом примере создается пустая копия таблицы AdventureWorks Sales.Currency, Sales.Currency2, в которую копируются данные. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

Чтобы создать пустую таблицу, введите следующую команду в редакторе запросов:

USE AdventureWorks;
GO
SELECT * INTO AdventureWorks.Sales.Currency2 
FROM AdventureWorks.Sales.Currency WHERE 1=2

Для массового копирования символьных данных в новую таблицу, то есть для импорта данных, введите в командной строке следующую команду:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -c

Чтобы убедиться в успешном выполнении команды, отобразите в редакторе запросов содержимое таблицы и введите:

USE AdventureWorks;
GO
SELECT * FROM Sales.Currency2

Г. Копирование отдельного столбца в файл данных

Чтобы выполнить копирование определенного столбца, можно использовать параметр queryout. Следующий пример копирует в файл данных из таблицы Sales.Currency только столбец Name. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c

Д. Копирование отдельной строки в файл данных

Чтобы выполнить копирование определенной строки, можно использовать параметр queryout. Следующий пример копирует только строку контакта с именем Jarrod Rana из таблицы AdventureWorks.Person.Contact в файл данных (Jarrod Rana.dat). Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp "SELECT * FROM AdventureWorks.Person.Contact WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c

Е. Копирование данных из запроса в файл данных

Результирующий набор копируется из инструкции Transact-SQL в файл данных с помощью параметра queryout. Следующий пример копирует имена из таблицы AdventureWorks.Person.Contact, упорядоченные по фамилии и далее по имени, в файл данных Contacts.txt. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp "SELECT FirstName, LastName FROM AdventureWorks.Person.Contact ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

Ж. Создание файла форматирования в формате, отличном от XML

В следующем примере создается XML-файл форматирования Currency.fmt для таблицы Sales.Currency в базе данных AdventureWorks. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp AdventureWorks.Sales.Currency format nul -T -c  -f Currency.fmt

Дополнительные сведения см. в разделе Основные сведения о файлах форматирования не в формате XML.

З. Создание XML-файла форматирования

Следующий пример создает XML-файл форматирования с именем Currency.xml для таблицы Sales.Currency в базе данных AdventureWorks. Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp AdventureWorks.Sales.Currency format nul -T -c -x -f Currency.xml
ms162802.note(ru-ru,SQL.90).gifПримечание.
Для применения параметра -x необходимо использовать клиент bcp 9.0. Дополнительные сведения об использовании клиента bcp 9.0 см. в разделе «Примечания».

Дополнительные сведения см. в разделе Основные сведения о XML-файлах форматирования.

И. Применение файла форматирования для выполнения массового импорта данных с помощью программы bcp

При выполнении импорта данных в экземпляр SQL Server используйте ключ -f с параметром in, чтобы использовать ранее созданный файл форматирования. Например, следующая команда выполняет массовое копирование содержимого файла данных Currency.dat в копию таблицы Sales.Currency (Sales.Currency2) с помощью ранее созданного файла форматирования (Currency.xml). Пример предполагает, что используется проверка подлинности Windows и существует доверенное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -f Currency.xml
ms162802.note(ru-ru,SQL.90).gifПримечание.
Файлы форматирования используются в тех случаях, когда поля файла данных отличаются от столбцов таблицы, например: по количеству, порядку или типу данных. Дополнительные сведения см. в разделе Файлы форматирования для импорта или экспорта данных.

Дополнительные примеры

Следующие разделы содержат примеры использования программы bcp:

См. также

Другие ресурсы

Подготовка данных к массовому экспорту или импорту
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Параллельный импорт данных с блокировкой на уровне таблицы
SET QUOTED_IDENTIFIER (Transact-SQL)
Хранимая процедура sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Форматы данных для импорта или экспорта данных
Файлы форматирования для импорта или экспорта данных
Оптимизация производительности массового импорта данных
Операции массового импорта и массового экспорта
Сценарии массового импорта и экспорта данных

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Измененное содержимое
  • Исправлено описание CHECK_CONSTRAINTS — выполнение этой подсказки предполагает пропуск обоих ограничений CHECK и FOREIGN KEY.

17 июля 2006 г.

Новое содержимое
  • Обновлено описание аргумента ORDER.
  • Добавлены ссылки «Дополнительные примеры» в разделы, содержащие примеры использования программы bcp.

14 апреля 2006 г.

Измененное содержимое
  • Примечание в описании CHECK_CONSTRAINTS исправлено в связи с удалением ограничения FOREIGN KEY из списка ограничений, которые проверяются в любом случае.
  • Обновлены требования к разрешению ALTER TABLE.