Использование файла форматирования для пропуска поля данных
Количество полей в файле данных может превышать количество столбцов в таблице. В этом подразделе описан процесс изменения файлов форматирования в форматах XML и не XML с целью сопоставления столбцов таблицы с полями файла данных и пропуска остальных полей.
Примечание. |
---|
Для массового импорта файла данных в таблицу с помощью команды bcp, а также инструкций BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK...). Дополнительные сведения см. в разделе Использование файла форматирования для массового импортирования данных. |
Образец таблицы и файла данных
В примерах этого подраздела используются следующие таблица и файл данных.
Образец таблицы
Для работы примеров необходимо, чтобы в образце базы данных AdventureWorks
в схеме dbo
была создана таблица myTestSkipField
. Чтобы создать эту таблицу, в редакторе запросов среды Microsoft SQL Server Management Studio, выполните следующий программный код.
USE AdventureWorks;
GO
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName nvarchar(50) ,
LastName nvarchar(50)
)
GO
Образец файла данных
Файл данных myTestSkipField-c.dat
содержит следующие записи:
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
Для массового импорта из файла myTestSkipField-c.dat
в таблицу myTestSkipField
файл форматирования должен сделать следующий код:
- сопоставить первое поле данных с первым столбцом,
PersonID
; - пропустить второе поле данных;
- сопоставить третье поле данных со вторым столбцом,
FirstName
; - сопоставить четвертое поле данных с третьим столбцом,
LastName
.
Не XML-файлы форматирования для дополнительных полей данных
Файл форматирования myTestSkipField.fmt
сопоставляет поля в файле myTestSkipField-c.dat
со столбцами таблицы myTestSkipField
. Файл форматирования имеет символьный формат данных. Чтобы пропустить столбец, необходимо изменить его порядковый номер на «0», как показано для столбца ExtraField
в файле форматирования.
Файл форматирования myTestSkipField.fmt
содержит следующие данные:
9.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 100 "," 0 ExtraField SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
Примечание. |
---|
Дополнительные сведения о не XML-файлах форматирования см. в разделе Основные сведения о файлах форматирования не в формате XML. |
Примеры
В следующем примере используется инструкция INSERT ... SELECT * FROM OPENROWSET(BULK...)
с файлом форматирования myTestSkipField.fmt
. В примере выполняется массовый импорт файла данных myTestSkipField-c.dat
в таблицу myTestSkipField
. Создание образца таблицы и файла данных см. выше в разделе «Образец таблицы и файла данных».
В редакторе запросов среды SQL Server Management Studio выполните следующий код:
USE AdventureWorks;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.fmt'
) AS t1;
GO
XML-файл форматирования для дополнительных полей данных
Файл форматирования в этом примере создан на основе другого файла форматирования myTestSkipField.xml
, в котором количество полей совпадает с количеством столбцов таблицы myTestSkipField
. Содержимое этого файла форматирования см. в разделе Создание файла форматирования.
Файл форматирования myTestSkipField.xml
сопоставляет поля в файле myTestSkipField-c.dat
со столбцами таблицы myTestSkipField
. Файл форматирования имеет символьный формат данных.
Файл форматирования myTestSkipField.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="7"/>
<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="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Примеры
В следующем примере используется инструкция INSERT ... SELECT * FROM OPENROWSET(BULK...)
с файлом форматирования myTestSkipField.Xml
. В примере выполняется массовый импорт файла данных myTestSkipField-c.dat
в таблицу myTestSkipField
. Создание образца таблицы и файла данных см. выше в разделе «Образец таблицы и файла данных».
В редакторе запросов среды SQL Server Management Studio выполните следующий код:
USE AdventureWorks;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.xml'
) AS t1;
GO
Примечание. |
---|
Сведения о синтаксисе XML-схемы и дополнительные образцы XML-файлов форматирования см. в разделе Основные сведения о XML-файлах форматирования. |
См. также
Основные понятия
Пропуск столбца таблицы с помощью файла форматирования
Использование файла форматирования для привязки столбцов таблицы к полям файла данных
Другие ресурсы
Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)