Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Datový soubor může obsahovat více polí než počet sloupců v tabulce. Tento článek popisuje úpravu souborů formátu jiného typu než XML a XML tak, aby vyhovovaly datovému souboru s více poli, a to mapováním sloupců tabulky na odpovídající datová pole a ignorováním dalších polí.
Další informace naleznete v tématu Vytvoření formátu souboru s bcp (SQL Server).
Poznámka
K hromadnému importu datového souboru do tabulky lze použít soubor ve formátu XML nebo jiného než XML pomocí příkazu nástroje bcp, příkazu BULK INSERT (Transact-SQL) nebo příkazu INSERT ... SELECT * FROM OPENROWSET BULK (Transact-SQL). Další informace najdete v tématu Použití formátu souboru k hromadnému importu dat (SQL Server).
Poznámka
Tato syntaxe, včetně hromadného vložení, se ve službě Azure Synapse Analytics nepodporuje. V Azure Synapse Analytics a dalších integracích cloudové databázové platformy můžete provádět přesun dat prostřednictvím příkazu COPY ve službě Azure Data Factorynebo pomocí příkazů T-SQL, jako je COPY INTO a PolyBase.
Příklady testovacích podmínek
Příklady změněných formátových souborů v tomto článku jsou založeny na ukázkové tabulce myTestSkipField
a datovém souboru D:\BCP\myTestSkipField.bcp
. Změňte umístění místního souboru v ukázce kódu na umístění souboru na vašem počítači.
Ukázková tabulka
Skript vytvoří testovací databázi a tabulku s názvem myTestSkipField
. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName varchar(25),
LastName varchar(30)
);
Ukázkový datový soubor
Vytvořte prázdný soubor D:\BCP\myTestSkipField.bcp
a vložte následující data:
1,SkipMe,Anthony,Grosse
2,SkipMe,Alica,Fatnowna
3,SkipMe,Stella,Rosenhain
Vytvoření formátových souborů
Chcete-li hromadně importovat data z myTestSkipField.bcp
do tabulky myTestSkipField
, musí formátovací soubor provést následující:
- Namapujte první datové pole na první sloupec,
PersonID
. - Přeskočte druhé datové pole.
- Namapujte třetí datové pole na druhý sloupec,
FirstName
. - Namapujte čtvrté datové pole na třetí sloupec,
LastName
.
Nejjednodušší metoda vytvoření souboru formátu je pomocí nástroje bcp. Nejprve vytvořte základní formátový soubor z existující tabulky. Za druhé upravte soubor základního formátu tak, aby odrážel skutečný datový soubor.
Vytvoření souboru jiného formátu než XML
Prostudujte si použití souborů ve formátu, který není XML (SQL Server) pro podrobné informace. Následující příkaz použije nástroj bcp k vygenerování souboru jiného formátu než XML, myTestSkipField.fmt
, na základě schématu myTestSkipField
. Kromě toho se kvalifikátor c
používá k určení znakových dat , t,
slouží k určení čárky jako ukončovače pole a T
slouží k určení důvěryhodného připojení pomocí integrovaného zabezpečení. Na příkazovém řádku zadejte následující příkaz:
bcp TestDatabase.dbo.myTestSkipField format nul -c -f D:\BCP\myTestSkipField.fmt -t, -T
Úprava souboru formátu jiného formátu než XML
Zkontrolujte strukturu souborů v ne-XML formátu pro terminologii. Otevřete D:\BCP\myTestSkipField.fmt
v Poznámkovém bloku a proveďte následující úpravy:
- Zkopírujte celý řádek souboru formátu pro
FirstName
a vložte ho přímo zaFirstName
na další řádek. - Zvyšte hodnotu pořadí polí souboru hostitele o jednu pro nový řádek a všechny následující řádky.
- Zvyšte počet sloupců tak, aby odrážel skutečný počet polí v datovém souboru.
- Upravte pořadí sloupců serveru z
2
na0
pro druhý řádek souboru formátu.
Porovnejte provedené změny:
před
13.0
3
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
po
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 0 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 50 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
Upravený formát souboru teď odráží:
- 4 datová pole
- První datové pole v
myTestSkipField.bcp
je mapováno na první sloupec,myTestSkipField.. PersonID
- Druhé datové pole v
myTestSkipField.bcp
není mapováno na žádný sloupec. - Třetí datové pole v
myTestSkipField.bcp
se mapuje na druhý sloupecmyTestSkipField.. FirstName
- Čtvrté datové pole v
myTestSkipField.bcp
se mapuje na třetí sloupecmyTestSkipField.. LastName
Vytvoření souboru formátu XML
Podrobné informace najdete v souborech formátu XML (SQL Server ). Následující příkaz použije nástroj bcp k vytvoření souboru formátu XML, myTestSkipField.xml
, na základě schématu myTestSkipField
.
- Kvalifikátor
c
slouží k určení dat znaků. -
t,
slouží k zadání čárky jako oddělovače pole. -
T
slouží k určení důvěryhodného připojení pomocí integrovaného zabezpečení. - K vygenerování souboru formátu založeného na JAZYCE XML se musí použít kvalifikátor
x
.
Na příkazovém řádku zadejte následující příkaz:
bcp TestDatabase.dbo.myTestSkipField format nul -c -x -f D:\BCP\myTestSkipField.xml -t, -T
Úprava souboru formátu XML
Projděte si syntaxi schématu pro soubory formátu XML, terminologii. Otevřete D:\BCP\myTestSkipField.xml
v Poznámkovém bloku a proveďte následující úpravy:
- Zkopírujte celé druhé pole a vložte ho přímo za druhé pole na dalším řádku.
- Zvyšte hodnotu
FIELD ID
o 1 pro novouFIELD
a pro každou dalšíFIELD
. -
COLUMN SOURCE
Zvyšte hodnotu o 1 proFirstName
aLastName
reflektujte revidované mapování.
Porovnejte provedené změny:
před
<?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="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>
po
<?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="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>
Upravený formát souboru teď odráží:
- 4 datová pole
-
FIELD
1, který odpovídáCOLUMN
1, je mapován na první sloupec tabulky,myTestSkipField.. PersonID
-
FIELD
2 neodpovídá žádnémuCOLUMN
sloupci tabulky, a proto není namapován na žádný sloupec tabulky. -
FIELD
3, který odpovídáCOLUMN
3, je přiřazen druhému sloupci tabulky,myTestSkipField.. FirstName
-
FIELD
4, který odpovídáCOLUMN
4, je přiřazen třetímu sloupci tabulkymyTestSkipField.. LastName
Importovat data pomocí formátovacího souboru pro vynechání datového pole
Příklady používají ukázkovou databázi, datový soubor a formátovací soubory vytvořené v tomto článku.
Použití bcp a souboru jiného formátu než XML
Na příkazovém řádku zadejte následující příkaz:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.fmt -T
Použití souborů formátu bcp a XML (SQL Server)
Na příkazovém řádku zadejte následující příkaz:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.xml -T
Použití souboru BULK INSERT (Transact-SQL) a jiného formátu než XML
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
BULK INSERT dbo.myTestSkipField
FROM 'D:\BCP\myTestSkipField.bcp'
WITH (FORMATFILE = 'D:\BCP\myTestSkipField.fmt');
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
Použití funkce BULK INSERT (Transact-SQL) a souborů formátu XML (SQL Server)
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
BULK INSERT dbo.myTestSkipField
FROM 'D:\BCP\myTestSkipField.bcp'
WITH (FORMATFILE = 'D:\BCP\myTestSkipField.xml');
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
Použití formátu OPENROWSET BULK (Transact-SQL) a souboru jiného formátu než XML
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
INSERT INTO dbo.myTestSkipField
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myTestSkipField.bcp',
FORMATFILE = 'D:\BCP\myTestSkipField.fmt'
) AS t1;
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
Použijte OPENROWSET BULK (Transact-SQL) a formátovací soubory XML (SQL Server)
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
INSERT INTO dbo.myTestSkipField
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myTestSkipField.bcp',
FORMATFILE = 'D:\BCP\myTestSkipField.xml'
) AS t1;
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;