- •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 лабораторной работе
- •Доп. Ссылки:
Д. Использование поставщика bulk функции openrowset совместно с файлом форматирования для получения строк из текстового файла
В следующем примере используется файл
форматирования для получения строк,
разделенных символами табуляции, из
файла values.txt, который содержит
следующие данные:
1 Data Item 1
2 Data Item 2
3 Data Item 3
Файл форматирования values.fmt
описывает столбцы в файле values.txt:
9.0
2
1 SQLCHAR 0 10 "\t" 1 ID SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "\r\n" 2 Description SQL_Latin1_General_Cp437_BIN
Это запрос, который возвращает данные:
SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
FORMATFILE = 'c:\test\values.fmt') AS a;
Дополнительные примеры
Дополнительные примеры использования инструкций INSERT...SELECT * FROM OPENROWSET(BULK...) см. в следующих разделах.
Примеры массового импорта и экспорта XML-документов
Сохранение значений идентификаторов при массовом импорте данных
Сохранение значений NULL или использование значений по умолчанию при массовом импорте данных
Использование файла форматирования для массового импорта данных
Применение символьного формата при импорте и экспорте данных
Пропуск столбца таблицы с помощью файла форматирования
Использование файла форматирования для пропуска поля данных
Использование файла форматирования для привязки столбцов таблицы к полям файла данных
Примеры массового импорта и экспорта xml-документов
SQL Server 2008 R2 http://technet.microsoft.com/ru-ru/library/ms191184%28v=sql.105%29.aspx
Можно выполнить массовый импорт XML-документов в базу данных SQL Server или осуществить массовый экспорт XML-документов из базы данных SQL Server. В этом разделе приведены примеры и того, и другого.
Для выполнения массового импорта данных из файла в таблицу SQL Server или несекционированное представление могут использоваться следующие средства.
Программа bcp
Программа bcp может выполнять экспорт везде в базе данных SQL Server, где работает инструкция SELECT, включая секционированные представления.
BULK INSERT
Инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...)
Дополнительные сведения см. в разделах Массовый импорт и экспорт данных с помощью программы bcp и Массовый импорт данных при помощи инструкции BULK INSERT или OPENROWSET(BULK...).
Примеры
Далее следуют примеры.
A. Массовый импорт XML-данных в виде двоичного байтового потока
Б. Массовый импорт XML-данных в существующую строку
В. Массовый импорт XML-данных из файла, содержащего DTD
Г. Указание признаков конца поля явным образом при помощи файла форматирования
Д. Массовый экспорт XML-данных
A. Массовый импорт XML-данных в виде двоичного байтового потока
При массовом импорте XML-данных из файла, содержащего объявление кодировки, которое необходимо применить, нужно указать параметр SINGLE_BLOB в функции OPENROWSET(BULK…). Параметр SINGLE_BLOB гарантирует, что средство синтаксического анализа XML в SQL Server произведет импорт данных в соответствии со схемой кодирования, указанной в XML-декларации.
Образец таблицы
Для проверки примера A необходимо создать
образец таблицы T.
USE tempdb
CREATE TABLE T (IntCol int, XmlCol xml)
GO
Образец файла данных
Перед запуском примера А необходимо
создать файл в кодировке UTF-8
(C:\SampleFolder\SampleData3.txt), содержащий
следующий образец, который определяет
схему в кодировке UTF-8.
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<ProductDescription ProductModelID="5">
<Summary>Some Text</Summary>
</ProductDescription>
</Root>
Пример A
В этом примере используется параметр
SINGLE_BLOB в инструкции INSERT ...
SELECT * FROM OPENROWSET(BULK...) для импорта данных
из файла с именем SampleData3.txt и
вставки экземпляра данных XML в таблицу
с одним столбцом, образец таблицы T.
INSERT INTO T(XmlCol)
SELECT * FROM OPENROWSET(
BULK 'c:\SampleFolder\SampleData3.txt',
SINGLE_BLOB) AS x
Примечания
С помощью параметра SINGLE_BLOB можно избежать несоответствия между кодировкой XML-документа (указанной в объявлении кодировки XML) и кодовой страницей строки, используемой сервером.
Если при использовании типов данных NCLOB или CLOB возникает конфликт кодовой страницы или кодировки, необходимо выполнить одно из следующих действий.
Удалить XML-декларацию, чтобы успешно импортировать содержимое XML-файла данных.
Указать кодовую страницу в параметре CODEPAGE запроса, который соответствует схеме кодирования, используемой в XML-декларации.
Подобрать настройки параметров сортировки баз данных для схемы кодирования XML-данных, отличной от кодировки Юникод.
[В начало]
