Formátumfájl létrehozása bcp-vel (SQL Server)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Ez a cikk azt ismerteti, hogyan hozhat létre formátumfájlt egy adott táblához a bcp segédprogram használatával. A formátumfájl a megadott adattípuson (-n, -c, -wvagy -N) és a tábla- vagy nézethatárolókon alapul.

Ha tömegesen importál egy SQL Server-táblába, vagy tömegesen exportál adatokat egy táblából, a formátumfájlokat rugalmas rendszerként használhatja adatfájlok írására. A formátumfájlok használatához kevés vagy semmilyen szerkesztésre van szükség ahhoz, hogy megfeleljenek más adatformátumoknak, vagy más szoftverprogramok adatfájljait olvashassák.

Korlátozások

A formátumfájl olvasásához használt segédeszköz (bcp.exe) verziója bcp ugyanaz, vagy később, mint a formátumfájl létrehozásához használt verzió. Például az SQL Server 2025 (17.x) bcp képes olvasni egy 16.0-os formátumú fájlt, amelyet az SQL Server 2022 (16.x) bcpgenerál, de az SQL Server 2022 (16.x) bcp nem képes olvasni egy 17.0-s formátumú fájlt, amelyet az SQL Server 2025 (17.x) bcpgenerál.

Jegyzet

Ez a szintaxis, beleértve a tömeges beszúrást, nem támogatott az Azure Synapse Analyticsben. Az Azure Synapse Analyticsben és más felhőalapú adatbázisplatform-integrációkban az adatáthelyezést az Azure Data Factory COPY utasításánakvagy T-SQL-utasítások, például a COPY INTO és a PolyBasehasználatával végezheti el.

Formátumfájlok létrehozása

Az SQL Server kétféle formátumfájlt támogat: nem XML formátumot és XML formátumot. A nem XML formátum az SQL Server korábbi verziói által támogatott eredeti formátum.

Az XML- és a nem XML formátumú fájlok általában felcserélhetők. Javasoljuk azonban, hogy xml-szintaxist használjon a fájlok formázásához, mivel ezek számos előnyt biztosítanak a nem XML formátumú fájlokkal szemben.

A cikkben szereplő kódminták az AdventureWorks2025 or AdventureWorksDW2025 minta adatbázist használják, amelyet letölthetsz az Azure Data SQL Samples Repository GitHub repository-jából. Az Adventure Works Cycles egy kitalált gyártó vállalat, amely az adatbázis-fogalmakat és forgatókönyveket mutatja be.

Formátumfájl létrehozása

Ha a bcp használatával formátumfájlt szeretne létrehozni, adja meg a(z) format argumentumot, és az adatfájl elérési útja helyett a(z) nul elemet használja. Az format opció mindig megköveteli az -f opciót.

XML formátumú fájl létrehozásához meg kell határoznod az -x opciót, például bcp <table_or_view> format nul -f <format_file_name> -x.

Az XML formátumú fájl megkülönböztetéséhez például a fájlnév kiterjesztését használjuk.xml. MyTable.xml

Az XML formátumfájlok szerkezetéről és mezőiről információért lásd: XML formátumfájlok.

Példák

Ez a rész példákat tartalmaz, amelyek bemutatják, hogyan lehet formátumfájlt létrehozni bcp . A HumanResources.Department táblázat négy oszlopot tartalmaz: DepartmentID, Name, GroupNameés ModifiedDate.

Egy. Készíts formátumfájlt karakteradatokhoz

A következő példa karakteradat-formátumokat használva hoz létre egy formátumfájlt a HumanResources.Department táblához.

Hozz létre egy XML formátumfájlt .Department-c.xml A formátumfájl nem alapértelmezett mezőelválasztót használ (,). A következő szakasz a generált formátumfájl tartalmát mutatja be.

A bcp parancs a következő feltételeket tartalmazza.

Selejtezők Leírás
format nul -x -f <format_file> Megadja az XML formátumfájlt.
-c Karakteradatokat ad meg.
-t, Vesszőt (,) ad meg mezőelválasztóként.

Megjegyzés: Ha az adatfájl az alapértelmezett terminátort (\t) használja, a -t kapcsoló szükségtelen.
-T Megadja, hogy bcp az SQL Server-hez megbízható kapcsolattal csatlakozik integrált biztonsággal. Ha nem adja meg a(z) -T értéket, a sikeres bejelentkezéshez meg kell adnia a(z) -U és -P értékét.

A Windows parancssorában adja meg a következő bcp parancsot:

bcp AdventureWorks2025.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

A létrehozott formátumfájl (Department-c.xml) a következő XML-elemeket tartalmazza:

<?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="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="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Ennek a formátumfájlnak a szintaxisáról információért lásd: XML formátumfájlok. A karakteradatokról információért lásd: Használj karakterformátumot adatimporthoz vagy exportáláshoz.

B. Létrehozz egy formátumfájlt natív adatokhoz

A következő példa létrehoz egy formátumfájlt a HumanResources.Department táblázathoz natív adattípusok felhasználásával.

Hozz létre egy XML formátumfájlt .Department-n.xml A következő szakasz a generált formátumfájl tartalmát mutatja be.

A bcp parancs a következő feltételeket tartalmazza.

Selejtezők Leírás
format nul -x -f <format_file> Megadja az XML formátumfájlt.
-n Natív adattípusokat határoz meg.
-T Megadja, hogy bcp az SQL Server-hez megbízható kapcsolattal csatlakozik integrált biztonsággal. Ha nem adja meg a(z) -T értéket, a sikeres bejelentkezéshez meg kell adnia a(z) -U és -P értékét.

A Windows parancssorában adja meg a következő bcp parancsot:

bcp AdventureWorks2025.HumanResources.Department format nul -x -f Department-n.xml -n -T

A létrehozott formátumfájl (Department-n.xml) a következő XML-elemeket tartalmazza:

<?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="NativeFixed" LENGTH="2"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Ennek a formátumfájlnak a szintaxisáról információért lásd: XML formátumfájlok. A natív adatok használatáról információért lásd: Használd natív formátumot adatimportáláshoz vagy exportáláshoz.

C. Nem XML formátumú fájl létrehozása Unicode natív adatokhoz

Ha nem XML formátumú fájlt szeretne létrehozni a Unicode natív adataihoz a HumanResources.Department táblához, használja a következő parancsot:

bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt

A Unicode natív formátumú adatok használatáról további információt a Unicode natív formátum használata adatok importálásához vagy exportálásához című témakörben talál.

D. Nem XML formátumú fájl létrehozása Unicode-karakteradatokhoz

Ha egy nem XML formátumú fájlt szeretne létrehozni a Unicode karakteradatokhoz, az alapértelmezett elválasztókat használó HumanResources.Department táblához, használja a következő parancsot:

bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt

További információért a Unicode karakteradatok használatáról lásd: Use Unicode karakterformátum adatimporthoz vagy exporthoz.

E. Formátumfájl használata a kódlap opcióval

Amikor a(z) bcp format használatával formátumfájlt hoz létre, a rendszer a rendezési sorrendre és a kódlapra vonatkozó információkat ír a formátumfájlba.

Az alábbi példa formátumfájl, egy öt oszlopos táblázathoz, tartalmazza a sorrendet.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0          Cyrillic_General_CS_AS
2  SQLCHAR         0       0       "\t"             2     c_1          Cyrillic_General_CS_AS
3  SQLCHAR         0       3000    "\t"             3     c_2          Cyrillic_General_CS_AS
4  SQLCHAR         0       5       "\t"             4     c_3          ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""

Ha a bcp in -c -C65001 -f format_file ... használatával, vagy a BULK INSERT használatával, vagy a OPENROWSET és a FORMATFILE='format_file' CODEPAGE=65001 ... használatával próbál adatokat importálni az SQL Serverbe, akkor a formátumfájlban szereplő rendezési vagy kódlap-információk elsőbbséget élveznek a 65001-es beállítással szemben.

Ezért, ha formátumfájlt generálsz, manuálisan kell törölned az összeállítási információkat a generált formátumfájlból, mielőtt elkezdenéd visszaimportálni az adatokat az SQL Server-be.

A következő példa a formátumfájlt mutatja az összeállítási információk nélkül.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0              ""
2  SQLCHAR         0       0       "\t"             2     c_1              ""
3  SQLCHAR         0       3000    "\t"             3     c_2              ""
4  SQLCHAR         0       5       "\t"             4     c_3              ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""

Adatmezők leképezése táblázatoszlopok számára

Egy általa létrehozott bcp formátumfájl sorrendben írja le az összes táblaoszlopot. Egy formátumfájlt módosíthatsz, hogy átrendezd vagy kihagyd a táblázatoszlopokat. A formátumfájlokat testreszabhatja olyan adatfájlra, amelynek mezői nem képezhetők le közvetlenül a táblaoszlopok közé. További információkért lásd a következő cikkeket: