Использование файла форматирования для массового импорта данных (SQL Server)
Эта тема посвящена использованию файла форматирования в операциях массового импорта. Файл форматирования сопоставляет поля файла данных столбцам таблицы. Вы можете использовать файл форматирования, отличный от XML или XML, для массового импорта данных при использовании команды bcp или BULK INSERT или INSERT... SELECT * FROM OPENROWSET(BULK...) Команда Transact-SQL.
Важно!
Чтобы файл форматирования мог работать с файлом данных в Юникоде, все поля входных данных должны быть представлены в виде текстовых строк в Юникоде (то есть в Юникоде в виде строк фиксированной длины или заканчивающимися символом конца строки).
Примечание
Если вы не знакомы с файлами форматирования, см. статьи Файлы форматирования, отличные от XML (SQL Server) и XML-файлы форматирования (SQL Server).
Параметры файла форматирования для команд массового импортирования
В следующей таблице перечислены параметры файла форматирования для каждой команды массового импортирования.
Команда массовой загрузки | Параметр файла форматирования |
---|---|
BULK INSERT | FORMATFILE = 'путь_к_файлу_форматирования' |
Инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...). | FORMATFILE = 'путь_к_файлу_форматирования' |
bcp ... В | -fformat_file |
Дополнительные сведения см. в разделах служебная программа bcp, BULK INSERT (Transact-SQL) или OPENROWSET (Transact-SQL).
Примечание
Для массового экспорта или импорта данных SQLXML используется один из следующих типов данных в файле форматирования. SQLCHAR или SQLVARYCHAR (данные посылаются в кодовой странице клиента или в кодовой странице, предполагаемой параметрами сортировки), SQLNCHAR или SQLNVARCHAR (данные посылаются в формате Юникод) и SQLBINARY или SQLVARYBIN (данные посылаются без преобразования).
Примеры
В примерах в этом разделе показано, как использовать файлы форматирования для массового импорта данных с помощью команды bcp и BULK INSERT и INSERT ... ИНСТРУКЦИИ SELECT * FROM OPENROWSET(BULK...). Перед выполнением примеров массового импортирования необходимо создать учебную таблицу, файл данных и файл форматирования.
Образец таблицы
Примеры требуют создания таблицы с именем myTestFormatFiles в образце базы данных AdventureWorks2012 в схеме dbo . Чтобы создать эту таблицу, в SQL Server Management Studio Редактор запросов выполните следующую команду:
USE AdventureWorks2012;
GO
CREATE TABLE myTestFormatFiles (
Col1 smallint,
Col2 nvarchar(50),
Col3 nvarchar(50),
Col4 nvarchar(50)
);
GO
Образец файла данных
В примере используется образец файла данных myTestFormatFiles-c.Dat
, который содержит следующие записи. Чтобы создать файл данных, в командной строке Microsoft Windows введите:
10,Field2,Field3,Field4
15,Field2,Field3,Field4
46,Field2,Field3,Field4
58,Field2,Field3,Field4
Образцы файлов форматирования
В некоторых примерах в этом разделе используется файл форматирования XML myTestFormatFiles-f-x-c.Xml
, в других примерах используются файлы других форматов (не XML). Во всех файлах форматирования содержатся символьные данные и используется нестандартный признак конца поля (,).
Образец файла форматирования в формате, отличном от XML
В приведенном ниже примере используется команда bcp для создания XML-файла форматирования из таблицы myTestFormatFiles
. Файл myTestFormatFiles.Fmt
содержит следующие сведения:
9.0
4
1 SQLCHAR 0 7 "," 1 Col1 ""
2 SQLCHAR 0 100 "," 2 Col2 SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 3 Col3 SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "\r\n" 4 Col4 SQL_Latin1_General_CP1_CI_AS
Чтобы воспользоваться командой bcp с параметром format для создания этого файла форматирования, введите в командной строке Windows следующее:
bcp AdventureWorks2012..MyTestFormatFiles format nul -c -t, -f myTestFormatFiles.Fmt -T
Дополнительные сведения о создании файла форматирования см. в статье Создание файла форматирования (SQL Server).
Образец XML-файла форматирования
В приведенном ниже примере используется команда bcp для создания XML-файла форматирования из таблицы myTestFormatFiles
. Файл myTestFormatFiles.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="Col1" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Чтобы воспользоваться командой bcp с параметром format для создания этого файла форматирования, введите в командной строке Windows следующее:
bcp AdventureWorks2012..MyTestFormatFiles format nul -c -t, -x -f myTestFormatFiles.Xml -T
Использование команды bcp
В следующем примере используется bcp для массового импорта myTestFormatFiles-c.Dat
данных из файла данных в HumanResources.myTestFormatFiles
таблицу в образце базы данных. В примере используется файл форматирования XML MyTestFormatFiles.Xml
. Перед импортированием файла данных все существующие строки таблицы удаляются.
В командной строке Windows введите:
bcp AdventureWorks2012..myTestFormatFiles in C:\myTestFormatFiles-c.Dat -f C:\myTestFormatFiles.Xml -T
Примечание
Дополнительные сведения об этой команде см. в разделе Программа bcp.
Использование предложения BULK INSERT
В следующем примере функция BULK INSERT используется для массового импорта данных из myTestFormatFiles-c.Dat
файла данных в HumanResources.myTestFormatFiles
таблицу в образце базы данных AdventureWorks2012. В примере используется файл форматирования, отличный от XML, MyTestFormatFiles.Fmt
. Перед импортированием файла данных все существующие строки таблицы удаляются.
В SQL Server Management Studio Редактор запросов выполните следующую команду:
USE AdventureWorks2012;
GO
DELETE myTestFormatFiles;
GO
BULK INSERT myTestFormatFiles
FROM 'C:\myTestFormatFiles-c.Dat'
WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt');
GO
SELECT * FROM myTestFormatFiles;
GO
Примечание
Дополнительные сведения об этой инструкции см. в разделе BULK INSERT (Transact-SQL).
Использование поставщика массовых наборов строк OPENROWSET
В следующем примере для массового импорта данных из файла данных INSERT ... SELECT * FROM OPENROWSET(BULK...)
в таблицу myTestFormatFiles-c.Dat
образца базы данных HumanResources.myTestFormatFiles
используется команда AdventureWorks
. В примере используется файл форматирования XML MyTestFormatFiles.Xml
. Перед импортированием файла данных все существующие строки таблицы удаляются.
В SQL Server Management Studio Редактор запросов выполните следующую команду:
USE AdventureWorks2012;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
SELECT *
FROM OPENROWSET(BULK 'C:\myTestFormatFiles-c.Dat',
FORMATFILE='C:\myTestFormatFiles.Xml'
) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO
Закончив эксперименты с образцом таблицы, удалите ее при помощи следующей инструкции:
DROP TABLE myTestFormatFiles
Примечание
Дополнительные сведения о предложении OPENROWSET BULK см. в статье OPENROWSET (Transact-SQL).
Дополнительные примеры
Создание файла форматирования (SQL Server)
Пропуск столбца таблицы с помощью файла форматирования (SQL Server)
Использование файла форматирования для пропуска поля данных (SQL Server)
См. также:
Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Файлы формата, отличные от XML (SQL Server)
XML-файлы форматирования (SQL Server)