- •I лабораторная работа Тема: Массовый импорт и экспорт данных, обработка ошибок
- •Основные сведения
- •Синтаксические обозначения в Transact-sql (Transact-sql)
- •Составные имена
- •Операции массового импорта и массового экспорта
- •Внутри- и внепроцессная операция
- •Файлы форматирования
- •Форматы данных для импорта или экспорта данных
- •Обработчик запросов и массовый импорт
- •Вопросы производительности
- •Управление пакетами для массового импорта данных
- •Ограничения
- •Вопросы производительности
- •Массовый экспорт или импорт документов sqlxml
- •Преобразование типов из символьного в десятичный
- •Пример импорта числового значения в экспоненциальном представлении
- •Делегирование учетных записей безопасности (Олицетворение)
- •А. Применение вертикальной черты в качестве признака конца столбца при импорте данных из файла
- •Б. Применение аргумента fire_triggers
- •В. Применение перевода строки в качестве признака конца строки
- •Дополнительные примеры
- •Программа bcp
- •Поддержка собственного формата файлов данных
- •Вычисляемые столбцы и столбцы типа timestamp
- •Указание идентификаторов, содержащих пробелы или кавычки
- •Проверка данных
- •Массовый экспорт или импорт документов sqlxml
- •А. Копирование строк таблицы в файл данных (с помощью доверительного соединения)
- •Б. Копирование строк таблицы в файл данных (в смешанном режиме проверки подлинности)
- •В. Копирование данных из файла в таблицу
- •Г. Копирование отдельного столбца в файл данных
- •Д. Копирование отдельной строки в файл данных
- •Е. Копирование данных из запроса в файл данных
- •Ж. Создание файла форматирования в формате, отличном от xml
- •З. Создание xml-файла форматирования
- •И. Применение файла форматирования для выполнения массового импорта данных с помощью программы bcp
- •Применение инструкции openrowset с параметром bulk
- •Массовый импорт данных sqlchar, sqlnchar или sqlbinary
- •Массовый экспорт или импорт документов sqlxml
- •А. Использование функции openrowset совместно с инструкцией select и поставщиком ole db для собственного клиента sql Server
- •Б. Использование поставщика ole db для Jet (Майкрософт)
- •В. Использование функции openrowset и другой таблицы в предложении inner join
- •Г. Использование функции openrowset для массовой вставки данных из файла в столбец varbinary(max)
- •Д. Использование поставщика bulk функции openrowset совместно с файлом форматирования для получения строк из текстового файла
- •Дополнительные примеры
- •Примеры массового импорта и экспорта xml-документов
- •Б. Массовый импорт xml-данных в существующую строку
- •Образец файла данных
- •Пример б
- •В. Массовый импорт xml-данных из файла, содержащего dtd
- •Образец таблицы
- •Образец файла форматирования
- •Пример г
- •Д. Массовый экспорт xml-данных
- •Контрольные вопросы к I лабораторной работе
- •Доп. Ссылки:
Поддержка собственного формата файлов данных
В 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
