Использование файла форматирования для сопоставления столбцов таблицы с полями файла данных (SQL Server)
Файл данных может содержать поля, выстроенные в порядке, отличном от порядка соответствующих столбцов в таблице. В этом подразделе описывается изменение файлов форматирования в формате XML и в формате, отличном от XML для импорта файла данных, поля которого выстроены в ином порядке, нежели столбцы таблицы. Измененный файл форматирования сопоставляет поля данных соответствующим столбцам таблицы.
Примечание |
---|
Файлы форматирования в формате XML и в формате, отличном от XML, могут использоваться для массового импорта файла данных в таблицу командой bcp, инструкцией BULK INSERT или инструкцией INSERT ... SELECT * FROM OPENROWSET(BULK...). Дополнительные сведения см. в разделе Использование файла форматирования для массового импорта данных (SQL Server). |
Образец таблицы и файла данных
В примерах этого подраздела используются следующие таблица и файл данных.
Образец таблицы
Для работы примеров этого раздела необходимо, чтобы в образце базы данных AdventureWorks2012 в схеме dbo была создана таблица myTestOrder. Чтобы создать эту таблицу, в редакторе запросов среды Среда SQL Server Management Studio выполните:
USE AdventureWorks2012;
GO
CREATE TABLE myTestOrder
(
Col1 smallint,
Col2 nvarchar(50) ,
Col3 nvarchar(50) ,
Col4 nvarchar(50)
);
GO
Файл данных
Файл данных myTestOrder-c.txt содержит следующие записи:
DataField3,DataField2,1,DataField4
DataField3,DataField2,1,DataField4
DataField3,DataField2,1,DataField4
При массовом импорте данных из myTestSkipCol2-c.dat в таблицу myTestSkipCol файл форматирования должен сопоставить первое поле данных со столбцом Col3, второе поле данных — со столбцом Col2, третье поле данных — со столбцом Col1, а четвертое поле данных — со столбцом Col4.
Использование файла форматирования в формате, отличном от XML
Изменение порядка сопоставления столбцов достигается путем изменения значения порядка, чтобы указать для столбца позицию соответствующего поля данных.
В следующем образце файла форматирования формата, отличного от XML присутствует файл форматирования myTestOrder.fmt, который сопоставляет поля в файле myTestOrder-c.txt со столбцами таблицы myTestOrder. Дополнительные сведения о создании файлов данных и таблиц см. в находящемся выше разделе «Образец таблицы и файла данных». Файл форматирования имеет символьный формат данных.
В нем содержатся следующие данные:
9.0
4
1 SQLCHAR 0 100 "," 3 Col3 SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "," 2 Col2 SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 7 "," 1 Col1 ""
4 SQLCHAR 0 100 "\r\n" 4 Col4 SQL_Latin1_General_CP1_CI_AS
Примечание |
---|
Дополнительные сведения о структуре файлов форматирования в формате, отличном от XML см. в разделе Файлы формата, отличные от XML (SQL Server). |
Пример
В следующем примере инструкция BULK INSERT производит массовый импорт данных из файла данных myTestOrder-c.txt в образец таблицы myTestOrder с использованием файла форматирования в формате, отличном от XML: myTestOrder.fmt.
В редакторе запросов среды Среда SQL Server Management Studio выполните:
USE AdventureWorks2012;
GO
BULK INSERT myTestOrder
FROM 'C:\myTestOrder-c.txt'
WITH (formatfile='C:\myTestOrder.fmt');
GO
Использование XML-файла форматирования
Следующий образец файла форматирования в формате, отличном от XML представляет файл форматирования myTestOrder.xml, который сопоставляет поля в файле myTestOrder-c.txt столбцам таблицы myTestOrder (сведения о создании таблицы и файла данных см. в расположенном выше разделе «Образец таблицы и файла данных»).
В файле форматирования myTestOrder.xml содержатся следующие данные:
<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="3" NAME="Col1" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="1" NAME="Col3" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Примечание |
---|
Дополнительные сведения о синтаксисе XML-схемы и дополнительные образцы XML-файлов форматирования см. в разделе XML-файлы форматирования (SQL Server). |
Пример
Следующий пример использует поставщик массового набора строк OPENROWSET для импорта данных из файла данных myTestOrder-c.txt в образец таблицы myTestOrder с использованием XML-файла форматирования myTestOrder.xml. Инструкция INSERT… SELECT задает список столбцов в списке выборки.
В редакторе запросов среды Среда SQL Server Management Studio выполните:
USE AdventureWorks2012;
GO
INSERT INTO myTestOrder
SELECT Col1, Col2, Col3, Col4
FROM OPENROWSET(BULK 'C:\myTestOrder-c.txt',
FORMATFILE='C:\myTestOrder.Xml'
) AS t1;
GO
См. также
Основные понятия
Пропуск столбца таблицы с помощью файла форматирования (SQL Server)
Использование файла форматирования для пропуска поля данных (SQL Server)