Использование файла форматирования для привязки столбцов таблицы к полям файла данных
Файл данных может содержать поля, выстроенные в порядке, отличном от порядка соответствующих столбцов в таблице. В этом подразделе описывается изменение файлов форматирования в формате XML и не в формате XML для импорта файла данных, поля которого выстроены в ином порядке, нежели столбцы таблицы. Измененный файл форматирования сопоставляет поля данных соответствующим столбцам таблицы.
Примечание. |
---|
Для массового импорта файла данных в таблицу командой bcp, инструкцией BULK INSERT или инструкцией INSERT ... SELECT * FROM OPENROWSET(BULK...). Дополнительные сведения см. в разделе Использование файла форматирования для массового импортирования данных. |
Образец таблицы и файла данных
В примерах этого подраздела используются следующие таблица и файл данных.
Образец таблицы
Для работы примеров этого раздела необходимо, чтобы в образце базы данных AdventureWorks
в схеме dbo
была создана таблица myTestOrder
. Чтобы создать эту таблицу, в редакторе запросов среды SQL Server Management Studio выполните:
USE AdventureWorks;
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. |
Пример
В следующем примере инструкция BULK INSERT
производит массовый импорт данных из файла данных myTestOrder-c.Txt
в образец таблицы myTestOrder
с использованием файла форматирования не в формате XML: myTestOrder.fmt
.
В редакторе запросов среды SQL Server Management Studio выполните следующий запрос:
USE AdventureWorks;
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-файлах форматирования. |
Пример
Следующий пример использует поставщик массового набора строк OPENROWSET
для импорта данных из файла данных myTestOrder-c.txt
в образец таблицы myTestOrder
с использованием XML-файла форматирования myTestOrder.xml
. Инструкция INSERT… SELECT
задает список столбцов в списке выборки.
В редакторе запросов среды SQL Server Management Studio выполните:
USE AdventureWorks;
GO
INSERT INTO myTestOrder
SELECT Col1, Col2, Col3, Col4
FROM OPENROWSET(BULK 'C:\myTestOrder-c.txt',
FORMATFILE='C:\myTestOrder.Xml'
) AS t1;
GO
См. также
Основные понятия
Пропуск столбца таблицы с помощью файла форматирования
Использование файла форматирования для пропуска поля данных