Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Правка_Руководство к 1 лр.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
116 Кб
Скачать
☆

Поддержка собственного формата файлов данных

В SQL Server 2008 R2 программа bcp поддерживает только собственные файлы данных, совместимые с SQL Server 2000, SQL Server 2005 SQL Server 2008 и SQL Server 2008 R2.

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

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

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

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

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

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

Например, следующая команда bcp out создает файл данных с именем Currency Types.dat:

bcp AdventureWorks2008R2.Sales.Currency out "Currency Types.dat" -T -c

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

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

    • указать параметр -q; или

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

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

Теперь программа 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 не указана.

    Примечание

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

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

    Примечание

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

  • Используйте параметр -E, чтобы выполнить импорт значений идентификаторов из файла данных.

Примечание

Необходимость наличия разрешения ALTER TABLE на целевую таблицу было новой особенностью SQL Server 2005. Если у учетной записи пользователя нет разрешений ALTER для целевой таблицы, это новое требование может привести к ошибке скриптов bcp, не устанавливающих триггеры и проверки ограничений.

Рекомендации по выбору режимов: символьный (-c) и собственный (-n)

В этом разделе содержатся рекомендации по использованию символьного (-c) и собственного (-n) режимов.

  • (Администратор/пользователь) По возможности используйте собственный формат (-n), дабы избежать проблем с разделителями. Используйте собственный формат для экспорта и импорта с помощью SQL Server. При экспорте данных из SQL Server используйте параметр -c или -w, если данные будут импортироваться в базу данных не SQL Server.

  • (Администратор) Используя операцию BCP OUT, проверьте данные. Например, если используются BCP OUT, BCP IN и затем BCP OUT, убедитесь в том, что данные правильно экспортируются, а значения признака конца не используются как часть значения данных. Чтобы избежать конфликтов значений признака конца и значений данных, попробуйте переопределить признаки конца по умолчанию (с помощью параметров -t и -r), используя случайные шестнадцатеричные значения.

  • (Пользователь) Следует использовать уникальный признак конца достаточной длины (любая последовательность байтов или символов), чтобы свести к минимуму вероятность конфликта с фактическим значением строки. Это делается с помощью параметров -t и -r.

Примеры

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

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

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

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

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

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

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

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

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

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