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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

Тип данных Эффект
SQLCHAR или SQLVARYCHAR Данные отправляются в кодовой странице клиента или кодовой странице, определенной параметрами сортировки. Тот же эффект достигается указанием параметра DATAFILETYPE ='char' без указания файла форматирования.
SQLNCHAR или SQLNVARCHAR Данные отправляются в Юникоде. Тот же эффект достигается указанием параметра DATAFILETYPE = 'widechar' без указания файла форматирования.
SQLBINARY или SQLVARYBIN Данные отправляются без преобразования.

Преобразование типов из символьного в десятичный

В SQL Server 2005 и более поздних версиях выполняемые инструкцией BULK INSERT преобразования типа из строкового в десятичный следуют тем же правилам, что и функция Transact-SQL CONVERT, которая отклоняет числовые значения в экспоненциальном представлении. Такие строки инструкция BULK INSERT трактует как недопустимые и создает отчет ошибки преобразования.

Примечание
В SQL Server версии 7.0 и SQL Server 2000, инструкция BULK INSERT поддерживает преобразование строкового типа в десятичный для строк, представляющих собой числовые значения, которые используют экспоненциальный формат.

Чтобы решить эту проблему, применяется файл форматирования, позволяющий выполнить массовый импорт данных типа float в экспоненциальном представлении в десятичный столбец. В файле форматирования необходимо явно описать столбец с типом данных real или float. Дополнительные сведения об этих типах данных см. в разделе Типы данных float и real (Transact-SQL).

Примечание
Файл форматирования представляет данные типа real в виде SQLFLT4, а float — в виде SQLFLT8. Дополнительные сведения о XML-файлах форматирования см. в разделе Синтаксис схемы для XML-файлов форматирования; о файлах форматирования в формате, отличном от XML, см. в разделе Указание типа файлового хранилища с помощью программы bcp.

Пример импорта числового значения в экспоненциальном представлении

В этом примере используется следующая таблица:

CREATE TABLE t_float(c1 float, c2 decimal (5,4))

Пользователю необходимо выполнить массовый импорт данных в таблицу t_float. Файл данных «C:\t_float-c.dat» содержит данные в экспоненциальном представлении float, например:

8.0000000000000002E-28.0000000000000002E-2

Однако инструкция BULK INSERT не сможет выполнить импорт этих данных непосредственно в таблицу t_float, так как второй столбец c2 имеет тип данных decimal. Поэтому необходим файл форматирования. В нем данные типа float в экспоненциальном представлении должны быть сопоставлены десятичному формату столбца c2.

Следующий файл форматирования использует тип данных SQLFLT8 для сопоставления второго поля данных со вторым столбцом:

<?xml version="1.0"?>

<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<RECORD>

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/>

<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/> </RECORD> <ROW>

<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/>

<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/> </ROW> </BCPFORMAT>

Чтобы задействовать этот файл форматирования (файл C:\t_floatformat-c-xml.xml) при импорте тестовых данных в тестовую таблицу, необходимо выполнить следующую инструкцию Transact-SQL:

BULK INSERT bulktest..t_floatFROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');GO

Разрешения

Требует разрешений INSERT и ADMINISTER BULK OPERATIONS. Кроме того, необходимо разрешение ALTER TABLE, если выполняется одно из следующих условий.

· Существуют ограничения, и параметр CHECK_CONSTRAINTS не указан.

Примечание
Ограничения отключены по умолчанию. Чтобы проверить ограничения явно, укажите параметр CHECK_CONSTRAINTS.

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

Примечание
По умолчанию, триггеры не срабатывают. Чтобы явно включить триггеры, укажите параметр FIRE_TRIGGER.

· Для импорта значений идентификаторов из файла данных указан параметр KEEPIDENTITY.



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 207; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.239.110 (0.004 с.)