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

Д. Использование поставщика 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-данных, отличной от кодировки Юникод.

[В начало]