Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Az SQL Server egy XML-sémát biztosít, amely szintaxist határoz meg XML-formátumú fájlok írásához, adatok SQL Server-táblába történő tömeges importálásához. Az XML-formátumfájloknak be kell tartaniuk ezt a sémát, amelyet az XML-sémadefiníciós nyelv (XSDL) határoz meg. Az XML-formátumú fájlok csak akkor támogatottak, ha az SQL Server-eszközök az SQL Server natív ügyféllel együtt vannak telepítve.
Xml formátumú fájlokat használhat bcp paranccsal, BULK INSERT utasítással vagy INSERT ... SELECT * FROM OPENROWSET(BULK...) utasítással. A bcp paranccsal automatikusan létrehozhat egy XML-formátumfájlt egy táblához; További információ: bcp segédprogram.
A formátumfájlok kétféle formátumfájlt támogatnak a tömeges exportáláshoz és importáláshoz: nem XML formátumú fájlokat és XML formátumú fájlokat. Az XML-formátumú fájlok rugalmas és hatékony alternatívát nyújtanak a nem XML formátumú fájlok helyett. A nem XML formátumú fájlokról további információt a Nem XML formátumú fájlok (SQL Server)című témakörben talá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.
Az XML-formátumfájlok előnyei
Az XML-formátumú fájlok önleírók, így könnyen olvashatók, hozhatók létre és bővíthetőek. Az adatok emberi olvashatók, így könnyen megérthetők az adatok tömeges műveletek során történő értelmezése.
Az XML-formátumú fájlok a céloszlopok adattípusait tartalmazzák. Az XML-kódolás egyértelműen leírja az adatfájl adattípusait és adatelemét, valamint az adatelemek és a táblaoszlopok közötti leképezést.
Ez lehetővé teszi az adatok adatfájlban való ábrázolásának és a fájl egyes mezőihez társított adattípus közötti elkülönítést. Ha például egy adatfájl az adatok karakterábrázolását tartalmazza, a megfelelő SQL-oszloptípus elveszik.
Az XML-formátumú fájlok lehetővé teszik egy olyan mező betöltését, amely egyetlen nagy objektumtípust (LOB) tartalmaz egy adatfájlból.
Az XML-formátumú fájlok bővíthetők, de kompatibilisek maradnak a korábbi verziókkal. Ezenkívül az XML-kódolás egyértelműsége lehetővé teszi több formátumfájl létrehozását egy adott adatfájlhoz. Ez akkor hasznos, ha az összes vagy néhány adatmezőt különböző táblák vagy nézetek oszlopaihoz kell hozzárendelnie.
Az XML-szintaxis független a művelet irányától; vagyis a szintaxis megegyezik a tömeges exportálás és a tömeges importálás esetében.
XML formátumú fájlok használatával tömegesen importálhat adatokat táblákba vagy nem particionált nézetekbe, és tömegesen exportálhat adatokat.
A OPENROWSET(BULK...) függvény esetében a céltábla megadása nem kötelező. Ennek az az oka, hogy a függvény az XML formátumfájlra támaszkodik az adatok adatfájlból való beolvasásához.
Jegyzet
A céltáblára a bcp paranccsal és a BULK INSERT utasítással van szükség, amely a céltábla oszlopaival hajtja végre a típusátalakítást.
XML-formátumfájlok felépítése
A nem XML formátumú fájlokhoz hasonlóan az XML-formátumú fájlok is meghatározzák az adatfájlok adatmezőinek formátumát és szerkezetét, és az adatmezőket egyetlen céltábla oszlopaihoz rendelik.
Az XML-formátumú fájlok két fő összetevőből állnak, <RECORD> és <ROW>:
<RECORD>az adatfájlban tárolt adatokat írja le.Minden
<RECORD>elem egy vagy több<FIELD>elemet tartalmaz. Ezek az elemek az adatfájl mezőinek felelnek meg. Az alapszintaxis a következő:<RECORD> <FIELD .../> [ ...n ] </RECORD>Minden
<FIELD>elem egy adott adatmező tartalmát írja le. Egy mező csak a tábla egy oszlopára képezhető le. Nem minden mezőt kell oszlopokra leképezni.Egy adatfájl mezője lehet rögzített/változó hosszúságú vagy karakterrel végződő. A mezőértékek a következőkként jelölhetők: karakter (egy bájtos ábrázolás), széles karakter (Unicode 2 bájtos ábrázolás használatával), natív adatbázisformátum vagy fájlnév. Ha egy mezőérték fájlnévként van ábrázolva, a fájlnév arra a fájlra mutat, amely a céltábla BLOB-oszlopának értékét tartalmazza.
<ROW>azt ismerteti, hogyan hozhat létre adatsorokat egy adatfájlból, amikor a fájlból származó adatokat importálja egy SQL Server-táblába.A
<ROW>elem egy<COLUMN>elemkészletet tartalmaz. Ezek az elemek táblázatoszlopoknak felelnek meg. Az alapszintaxis a következő:<ROW> <COLUMN .../> [ ...n ] </ROW>Minden
<COLUMN>elem csak egy mezőre képezhető le az adatfájlban. A<COLUMN>elem<ROW>elemeinek sorrendje határozza meg, hogy a tömeges művelet milyen sorrendben adja vissza őket. Az XML-formátumfájl minden<COLUMN>elemet egy helyi névhez rendel, amely nincs kapcsolatban a tömeges importálási művelet céltáblájának oszlopával.
Xml-formátumú fájlok sémaszintaxisa
Ez a szakasz az XML-formátumfájlok XML-sémájának elemeit és attribútumait tartalmazza. A formátumfájl szintaxisa független a művelet irányától; vagyis a szintaxis megegyezik a tömeges exportálás és a tömeges importálás esetében. Ez a szakasz azt is figyelembe veszi, hogy a tömeges importálás hogyan használja a <ROW> és <COLUMN> elemeket, és hogyan helyezheti egy elem xsi:type értékét egy adatkészletbe.
Ha meg szeretné tudni, hogy a szintaxis hogyan felel meg a tényleges XML-formátumú fájloknak, tekintse meg minta XML-formátumfájlokat.
Jegyzet
Módosíthatja a formátumfájlt, hogy tömegesen importálhasson olyan adatfájlból, amelyben a mezők száma és/vagy sorrendje eltér a táblaoszlopok számától és/vagy sorrendjétől. További információ: Fájlok formázása adatok importálásához vagy exportálásához (SQL Server).
Az XML-séma alapszintaxisa
Ezek a szintaxisutasságok csak az elemeket (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>és <COLUMN>) és azok alapvető attribútumait jelenítik meg.
Jegyzet
Az xsi:type vagy <FIELD> elem <COLUMN> értékéhez kapcsolódó további attribútumokat a cikk későbbi részében ismertetjük.
Sémaelemek
Ez a szakasz összefoglalja az XML-séma által az XML-formátumfájlokhoz definiált egyes elemek célját. Az attribútumokat a cikk későbbi részében külön szakaszokban ismertetjük.
<BCPFORMAT>Egy adott adatfájl rekordstruktúráját meghatározó formátumfájl-elem, valamint annak a táblasor oszlopaival való megfeleltetése.
<RECORD .../>Egy vagy több
<FIELD>elemet tartalmazó összetett elemet definiál. A formátumfájlban a mezők deklarálásának sorrendje az a sorrend, amelyben ezek a mezők megjelennek az adatfájlban.<FIELD .../>Adatfájlban lévő mezőt határoz meg, amely adatokat tartalmaz. Az elem attribútumairól a cikk későbbi részében tárgyalunk, a az
<FIELD>elemattribútumai szakaszban.<ROW .../>Egy vagy több
<COLUMN>elemet tartalmazó összetett elemet definiál. A<COLUMN>elemek sorrendje független a<FIELD>elemek sorrendjétől egyRECORDdefinícióban. A formátumfájl<COLUMN>elemeinek sorrendje határozza meg az eredményül kapott sorhalmaz oszlopsorrendét. Az adatmezők abban a sorrendben töltődnek be, amelyben a megfelelő<COLUMN>elemek deklarálva vannak a<COLUMN>elemben. További információért lásd a Hogyan használja a tömeges importálás a<ROW>elemeta cikk későbbi részében.<COLUMN>Elemként definiál egy oszlopot (
<COLUMN>). Minden<COLUMN>elem egy<FIELD>elemnek felel meg (amelynek azonosítója azSOURCEelem<COLUMN>attribútumában van megadva). Az elem attribútumairól a cikk későbbi részében tárgyalunk, a az<COLUMN>elemattribútumai szakaszban. Lásd még: Hogyan használja a tömeges importálás a<COLUMN>elemet, a cikk későbbi részében.</BCPFORMAT>A formátumfájl befejezéséhez szükséges.
A <FIELD> elem attribútumai
Ez a szakasz a <FIELD> elem attribútumait ismerteti, amelyek a következő sémaszintaxisban vannak összefoglalva:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Minden <FIELD> elem független a többi elemétől. A mezők leírása az alábbi attribútumok alapján történik:
| MEZŐ attribútum | Leírás | Szabadon választható/ Szükséges |
|---|---|---|
| ID="mezőazonosító" | Az adatfájl mezőjének logikai nevét adja meg. A mező azonosítója a mezőre való hivatkozáshoz használt kulcs. <FIELD ID="mezőazonosító" /> hozzárendelve <COLUMN SOURCE="mezőazonosító" /> |
Szükséges |
| xsi:type="fieldType" | Ez egy XML-szerkezet (attribútumként használva), amely azonosítja az elem példányának típusát. A fieldType értéke határozza meg, hogy az adott példányban melyik választható attribútumra van szüksége. | Kötelező (az adattípustól függően) |
| LENGTH="n" | Ez az attribútum egy rögzített hosszúságú adattípus egy példányának hosszát határozza meg. Az n értékének pozitív egész számnak kell lennie. |
Nem kötelező, kivéve, ha az xsi:type érték megköveteli |
| PREFIX_LENGTH="p" | Ez az attribútum határozza meg a bináris adatábrázolás előtagjának hosszát. A PREFIX_LENGTH, pa következő értékek egyikének kell lennie: 1, 2, 4vagy 8. |
Nem kötelező, kivéve, ha az xsi:type érték megköveteli |
| MAX_LENGTH="m" | Ez az attribútum az adott mezőben tárolható bájtok maximális száma. Céltábla nélkül az oszlop maximális hossza nem ismert. A MAX_LENGTH attribútum korlátozza a kimeneti karakteroszlopok maximális hosszát, korlátozva az oszlop értékéhez lefoglalt tárterületet. Ez különösen akkor kényelmes, ha a OPENROWSET függvény BULK lehetőségét használja egy SELECT FROM záradékban.Az m értékének pozitív egész számnak kell lennie. Alapértelmezés szerint a maximális hossz egy karakteres oszlop esetében 8000 karakter, egy nchar oszlop esetében pedig 4000 karakter. |
Szabadon választható |
| COLLATION="collationName" |
COLLATION csak karaktermezők esetén engedélyezett. Az SQL Server kollációs neveinek listáját az SQL Server Kollációs Nevekcímű résznél találja. |
Szabadon választható |
| TERMINATOR="terminator" | Ez az attribútum egy adatmező terminátorát adja meg. A terminátor bármilyen karakter lehet. Az elválasztó karakternek egyedinek kell lennie, amely nem része az adatoknak. Alapértelmezés szerint a mező terminátora a tabulátor karakter ( \t). Bekezdésjelek megjelenítéséhez használja a \r\n. |
Ezt az attribútumot csak a xsi:type jelzésű karakteradatokkal használják, amelyekhez ez az attribútum szükséges. |
xsi:type<FIELD>elem értékeiA
xsi:typeérték egy XML-szerkezet (attribútumként használva), amely azonosítja az elem egy példányának adattípusát. További információért lásd az Az xsi:type érték beírása egy adatkészletbe szakaszt ebben a cikkben.A
xsi:typeelem<FIELD>értéke az alábbi adattípusokat támogatja.<FIELD>xsi:typeértékekSzükséges XML-attribútumok
adattípus eseténVálasztható XML-attribútumok
adattípus eseténNativeFixedLENGTHEgyik sem. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONAz SQL Server adattípusairól további információt az Adattípusok című témakörben talál.
az
<COLUMN>elem attribútumaiEz a szakasz a
<COLUMN>elem attribútumait ismerteti, amelyek a következő sémaszintaxisban vannak összefoglalva:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Egy mező a céltábla egyik oszlopára van leképezve a következő attribútumok használatával:
COLUMN attribútum Leírás Szabadon választható/
SzükségesSOURCE="mezőazonosító" Az oszlophoz hozzárendelt mező azonosítóját adja meg.
<COLUMN SOURCE=fieldID"/><FIELD ID=fieldID"/>Szükséges NAME="columnName" A formátumfájl által képviselt sorkészlet oszlopának nevét adja meg. Ez az oszlopnév az eredményhalmaz oszlopának azonosítására szolgál, és nem kell megegyeznie a céltáblában használt oszlop nevével. Szükséges xsi:type="ColumnType" Ez egy XML-szerkezet (attribútumként használva), amely azonosítja az elem példányának adattípusát. A ColumnType értéke határozza meg, hogy az adott példányban választható attribútumok közül melyikre van szüksége.
Megjegyzés: A ColumnType lehetséges értékei és a hozzájuk tartozó attribútumok a xsi:type értékeinek<COLUMN>elemtáblában jelennek meg a <OSZLOP> elem szakaszában.Szabadon választható LENGTH="n" Meghatározza a rögzített hosszúságú adattípus egy példányának hosszát. LENGTHcsak akkor használatos, ha axsi:typekarakterlánc típusú.
Az n értékének pozitív egész számnak kell lennie.Nem kötelező (csak akkor érhető el, ha a xsi:typekarakterlánc típusú adat)PRECISION="n" Egy szám számjegyeinek számát jelzi. A 123,45-ös szám például 5 pontosságú.
Az értéknek pozitív egész számnak kell lennie.Nem kötelező (csak akkor érhető el, ha a xsi:typeváltozószámú adattípus)SCALE="int" Egy szám tizedesvesszőjétől jobbra lévő számjegyek számát jelzi. A 123,45-ös szám például 2-es skálával rendelkezik.
Az értéknek egész számnak kell lennie.Nem kötelező (csak akkor érhető el, ha a xsi:typeváltozószámú adattípus)NULLABLE={ "IGEN" | "NEM" } Azt jelzi, hogy egy oszlop NULLértéket feltételezhet-e. Ez az attribútum független aFIELDS-tól. Ha azonban egy oszlop nem nullázható, és a mezőbenNULLvan megadva (ami azt jelenti, hogy nincs megadva érték), futásidejű hiba keletkezik.
ANULLABLEattribútum csak akkor használatos, ha egyszerűSELECT FROM OPENROWSET(BULK...)utasítást használ.Nem kötelező (bármilyen adattípushoz elérhető)
xsi:type<COLUMN>elem értékeiA
xsi:typeérték egy XML-szerkezet (attribútumként használva), amely azonosítja az elem egy példányának adattípusát. A "xsi:typeérték adatkészletbe helyezése" című szakasz későbbi részében talál további információt.A
<COLUMN>elem a következőképpen támogatja a natív SQL-adattípusokat:Kategóriatípus <COLUMN>adattípusokSzükséges XML-attribútumok
adattípus eseténVálasztható XML-attribútumok
adattípus eseténRögzített SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4,SQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANTésSQLUNIQUEIDEgyik sem. NULLABLEváltozó szám SQLDECIMALésSQLNUMERICEgyik sem. \ , \ , \ változó dátum- és idő \ , \ , \ Egyik sem. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTésSQLUDTEgyik sem. NULLABLEkarakter LOB SQLNTEXTEgyik sem. NULLABLEbináris karakterlánc SQLBINARYésSQLVARYBINEgyik sem. NULLABLE,LENGTHKarakterlánc SQLCHAR,SQLVARYCHAR,SQLNCHARésSQLNVARCHAREgyik sem. NULLABLE,LENGTHFontos
Az SQLXML-adatok tömeges exportálásához vagy importálásához használja a következő adattípusok egyikét a formátumfájlban:
SQLCHARvagySQLVARYCHAR(az adatokat az ügyfélkódlapon vagy a rendezés által sugallt kódlapon küldi el),SQLNCHARvagySQLNVARCHAR(az adatokat Unicode-ként küldi el), vagySQLBINARYvagySQLVARYBIN(az adatokat konvertálás nélkül küldi el).Az SQL Server adattípusairól további információt az Adattípusok című témakörben talál.
Hogyan használja a tömeges importálás a <ROW> elemet?
A <ROW> elem bizonyos környezetekben figyelmen kívül lesz hagyva. Az, hogy a <ROW> elem befolyásolja-e a tömeges importálási műveletet, a művelet végrehajtásától függ:
A bcp parancs
Amikor adatokat tölt be egy céltáblába, bcp figyelmen kívül hagyja a
<ROW>összetevőt. Ehelyett bcp betölti az adatokat a céltábla oszloptípusai alapján.Transact-SQL utasítások (
BULK INSERTésOPENROWSETtömeges sorhalmaz-szolgáltató)Amikor tömegesen importál adatokat egy táblába, Transact-SQL utasítások a
<ROW>összetevőt használják a bemeneti sorkészlet létrehozásához. Emellett Transact-SQL utasítások a megfelelő típuskonverziókat hajtják végre a<ROW>alatt megadott oszloptípusok és a céltábla megfelelő oszlopai alapján. Ha a formátumfájlban és a céltáblában megadott oszloptípusok között eltérés áll fenn, további típusátalakítás történik. Ez a további típusátalakítás némi eltérést okozhat aBULK INSERTvagyOPENROWSETtömeges sorhalmaz-szolgáltatójának viselkedésében (azaz pontosságvesztést) a bcp-hoz képest.A
<ROW>elem információi lehetővé teszik, hogy a sorokat további információk nélkül lehessen létrehozni. Ezért létrehozhat egy sorkészletet egySELECTutasítással (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).A
OPENROWSET BULKzáradék formátumfájlt igényel. A mező adattípusáról az oszlop adattípusára való konvertálás csak XML formátumú fájllal érhető el.
Hogyan használja a tömeges importálás a <COLUMN> elemet?
Ha tömegesen importál adatokat egy táblába, a formátumfájl <COLUMN> elemei a következő beállításokkal képeznek le egy adatfájlmezőt táblázatoszlopokra:
Az adatfájl egyes mezőinek pozíciója az adatfájl egy sorában.
A mező adattípusának kívánt oszlop adattípussá alakításához használt oszloptípus.
Ha nincs mezőhöz hozzárendelt oszlop, a rendszer nem másolja a mezőt a létrehozott sorokba. Ez a viselkedés lehetővé teszi, hogy egy adatfájl különböző oszlopokkal rendelkező sorokat hozzon létre (különböző táblákban).
Hasonlóképpen, ha egy táblából tömegesen exportál adatokat, a formátumfájl minden <COLUMN> a bemeneti tábla oszlopát a kimeneti adatfájl megfelelő mezőjére képezi le.
A xsi:type értékének beállítása adatkészletbe
Ha egy XML-dokumentum ellenőrzése az XML-sémadefiníció (XSD) nyelvével történik, a xsi:type érték nem kerül az adatkészletbe. Az xsi:type adatokat azonban az XML-formátumfájl XML-dokumentumba (például myDoc) való betöltésével helyezheti el az adatkészletbe, ahogyan az az alábbi kódrészletben is látható:
...;
myDoc.LoadXml(xmlFormat);
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");
for (int i = 0; i < ColumnList.Count; i++)
{
Console.Write($"COLUMN: xsi:type={ColumnList[i].Attributes["type",
"http://www.w3.org/2001/XMLSchema-instance"].Value}\n");
}
Minta XML-formátumfájlok
Ez a szakasz az XML-formátumú fájlok különböző esetekben való használatáról tartalmaz információkat, beleértve egy Adventure Works-példát is.
Jegyzet
Az alábbi példákban látható adatfájlokban <tab> egy tabulátor karaktert jelöl egy adatfájlban, <return> pedig kocsivisszajelzést.
A példák az XML-formátumfájlok használatának főbb szempontjait szemléltetik az alábbiak szerint:
- Táblaoszlopokkal megegyező karakter-adatmezők rendezése
- Adatmezők és táblaoszlopok rendelése eltérően
- Adatmező kihagyása
- Különböző típusú mezők leképezése oszlopokra
- XML-adatok táblázatra való leképezése
- Rögzített hosszúságú vagy rögzített szélességű mezők importálása
- További példák
A formátumfájlok létrehozásáról további információt a Formátumfájl létrehozása bcp-vel (SQL Server) című témakörben talál.
A. A táblaoszlopokkal megegyező karakter-adatmezők rendezése
Az alábbi példa egy xml formátumú fájlt mutat be, amely egy három karaktert tartalmazó adatfájlt ír le. A formátumfájl egy három oszlopot tartalmazó táblába képezi le az adatfájlt. Az adatmezők egyesével felelnek meg a tábla oszlopainak.
-
táblázat (sor):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
adatfájl (rekord):
Age<tab>FirstName<tab>LastName<return>
Az alábbi XML-formátumfájl az adatfájlból a táblába olvas be.
A <RECORD> elemben a formátumfájl mind a három mező adatértékét jelöli karakteradatokként. Minden mező esetében a TERMINATOR attribútum az adatértéket követő terminátort jelöli.
Az adatmezők egyesével felelnek meg a tábla oszlopainak. A <ROW> elemben a formátumfájl leképezi a Age oszlopot az első mezőre, a FirstName oszlopot a második mezőre, és a LastName oszlopot a harmadik mezőre.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20" 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="age" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Jegyzet
Ezzel egyenértékű AdventureWorks2025 példa: Formátumfájl létrehozása bcp-vel (SQL Server).
B. Adatmezők és táblaoszlopok eltérő sorrendje
Az alábbi példa egy xml formátumú fájlt mutat be, amely egy három karaktert tartalmazó adatfájlt ír le. A formátumfájl egy olyan táblára képezi le az adatfájlt, amely az adatfájl mezőitől eltérően rendezett három oszlopot tartalmaz.
-
táblázat (sor):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
adatfájl (rekord):
Age<tab>FirstName<tab>LastName<return>
A <RECORD> elemben a formátumfájl mind a három mező adatértékét jelöli karakteradatokként.
A <ROW> elemben a formátumfájl a Age oszlopot az első mezőre, a FirstName oszlopot a harmadik mezőre, és a LastName oszlopot a második mezőre képezi le.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20"
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="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Jegyzet
Ezzel egyenértékű AdventureWorks2025 példa: Táblaoszlopok adatfájlmezőkre (SQL Server) való leképezése formátumfájl használatával.
C. Adatmező kihagyása
Az alábbi példa egy OLYAN XML-formátumú fájlt mutat be, amely egy négy karaktert tartalmazó adatfájlt ír le. A formátumfájl egy három oszlopot tartalmazó táblába képezi le az adatfájlt. A második adatmező nem felel meg egyetlen táblaoszlopnak sem.
-
táblázat (sor):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
adatfájl (rekord):
Age<tab>FirstName<tab>LastName<return>
A <RECORD> elemben a formátumfájl mind a négy mező adatértékét jelöli karakteradatokként. Minden mező esetében a TERMINATOR attribútum az adatértéket követő terminátort jelöli.
A <ROW> elemben a formátumfájl leképezi a Age oszlopot az első mezőre, a FirstName oszlopot a harmadik mezőre, a LastName oszlopot pedig a negyedik mezőre.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="10"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20"
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="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Jegyzet
Ezzel egyenértékű AdventureWorks2025 példa: Adatmező kihagyása formátumfájllal (SQL Server).
D. Térképezze fel a <FIELD> xsi:type-ot a <COLUMN> xsi:type-ra
Az alábbi példa különböző típusú mezőket és azok oszlopokhoz való leképezését mutatja be.
<?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 xsi:type="CharTerm" ID="C1" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="CharFixed" ID="C2" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4" />
</RECORD>
<ROW>
<COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT" />
<COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR"
LENGTH="16" NULLABLE="NO" />
<COLUMN SOURCE="C3" NAME="LastName" />
<COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY" />
<COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE" />
<COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT" />
<COLUMN SOURCE="C7" NAME="Interest" xsi:type="SQLDECIMAL"
PRECISION="5" SCALE="3" />
</ROW>
</BCPFORMAT>
E. XML-adatok leképezése táblázatba
Az alábbi példa létrehoz egy üres kétoszlopos táblát (t_xml), amelyben az első oszlop a int adattípusra, a második oszlop pedig a xml adattípusra van leképzve.
CREATE TABLE t_xml (c1 INT, c2 XML);
Az alábbi XML-formátumú fájl bepaktolna egy adatfájlt a t_xmltáblába.
<?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="NativePrefix" PREFIX_LENGTH="1" />
<FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR" />
</ROW>
</BCPFORMAT>
F. Rögzített hosszúságú vagy rögzített szélességű mezők importálása
Az alábbi példa 10 vagy 6 karakterek rögzített mezőit ismerteti. A formátumfájl ezeket a mezőhosszokat/szélességeket LENGTH="10" és LENGTH="6"jelöli. Az adatfájlok minden sora egy kocsivisszasoros adatcsatorna-kombinációval végződik, <CR><LF>, amelyet a formátumfájl TERMINATOR="\r\n"jelöl.
<?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="CharFixed" LENGTH="10" />
<FIELD ID="2" xsi:type="CharFixed" LENGTH="6" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
</ROW>
</BCPFORMAT>
További példák
További példák a nem XML formátumú fájlokra és az XML formátumfájlokra is, lásd a következő cikkeket:
- Táblaoszlop (SQL Server) kihagyása formátumfájllal
- Adatmező (SQL Server) kihagyása formátumfájllal
- Táblázatoszlopok adatfájlmezőkbe (SQL Server) való leképezése formátumfájllal
Kapcsolódó tevékenységek
- Formátumfájl létrehozása bcp (SQL Server)
- Használjon formátumfájlt az adatok tömeges importálásához (SQL Server)
- Táblaoszlop (SQL Server) kihagyása formátumfájllal
- Adatmező (SQL Server) kihagyása formátumfájllal
- Táblázatoszlopok adatfájlmezőkbe (SQL Server) való leképezése formátumfájllal