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 adatfájlok több mezőt tartalmazhatnak, mint a tábla oszlopainak száma. Ez a cikk azt ismerteti, hogyan módosíthatja a nem XML- és XML-formátumú fájlokat úgy, hogy a táblaoszlopokat a megfelelő adatmezőkre írják le, és figyelmen kívül hagyják a további mezőket.
További információ: Formátumfájl létrehozása bcp-vel (SQL Server).
Jegyzet
XML vagy nem XML formátumú fájlok használhatók egy adatfájl tömeges importálására a táblába egy bcp segédprogram parancs, a BULK INSERT (Transact-SQL) utasítás vagy az INSERT ... SELECT * FROM OPENROWSET BULK (Transact-SQL) utasítás segítségével. További információ: Adatok tömeges importálása (SQL Server)formátumfájl használata.
Jegyzet
Ez a szintaxis, beleértve a tömeges beszúrást is, 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.
Példa tesztelési feltételekre
A cikkben szereplő módosított formátumfájlok példái a mintatáblán myTestSkipField és az adatfájlon D:\BCP\myTestSkipField.bcpalapulnak. Módosítsa a kódrészlet helyi fájlhelyét egy fájl helyére a számítógépén.
Mintatábla
A szkript létrehoz egy tesztadatbázist és egy táblát.myTestSkipField Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName varchar(25),
LastName varchar(30)
);
Mintaadatfájl
Hozzon létre egy üres fájlt D:\BCP\myTestSkipField.bcp, és szúrja be a következő adatokat:
1,SkipMe,Anthony,Grosse
2,SkipMe,Alica,Fatnowna
3,SkipMe,Stella,Rosenhain
Formátumfájlok létrehozása
Ahhoz, hogy tömegesen importálja az adatokat a myTestSkipField.bcp-ból a myTestSkipField táblába, a formátumfájlnak a következőket kell tennie:
- Az első adatmezőt az első oszlopra képezze le,
PersonID. - Hagyja ki a második adatmezőt.
- Képezze le a harmadik adatmezőt a második oszlopra,
FirstName. - A negyedik adatmezőt képezd le a harmadik oszlopra,
LastName.
A formátumfájl létrehozásának legegyszerűbb módja a bcp segédprogram. Először hozzon létre egy alapformátumfájlt a meglévő táblából. Másodszor módosítsa az alapformátumfájlt úgy, hogy az tükrözze a tényleges adatfájlt.
Nem XML formátumú fájl létrehozása
Részletes információkért tekintse át Nem XML formátumú fájlok (SQL Server) használatát. Az alábbi parancs a bcp segédprogram használatával hoz létre egy nem xml formátumú fájlt, myTestSkipField.fmta myTestSkipFieldsémája alapján. Emellett a minősítő c karakteradatok megadására szolgál, t, vesszőt ad meg mezőkifejezésként, a T pedig megbízható kapcsolat megadására szolgál az integrált biztonság használatával. A parancssorban adja meg a következő parancsot:
bcp TestDatabase.dbo.myTestSkipField format nul -c -f D:\BCP\myTestSkipField.fmt -t, -T
A nem XML formátumú fájl módosítása
A terminológiához tekintse át a nem XML formátumú fájlok szerkezetét. Nyissa meg D:\BCP\myTestSkipField.fmt a Jegyzettömbben, és hajtsa végre a következő módosításokat:
- Másolja ki a
FirstNameformátumfájljának teljes sorát, és illessze be közvetlenülFirstNameután a következő sorba. - Növelje a gazdagépfájl mező sorrend értékét egy értékkel az új sorhoz és az összes további sorhoz.
- Növelje az oszlopok számát, hogy tükrözze az adatfájlban lévő mezők tényleges számát.
- Módosítsa a kiszolgáló oszlopainak sorrendjét a
2-ról0-re a második formátumfájl sorában.
Hasonlítsa össze a végrehajtott módosításokat:
előtt
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
után
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
A módosított formátumfájl a következőt tükrözi:
- 4 adatmező
- A
myTestSkipField.bcpelső adatmezője az első oszlopra van leképezvemyTestSkipField.. PersonID. - A
myTestSkipField.bcpmásodik adatmezője nincs egyetlen oszlophoz sem megfeleltetve. - A
myTestSkipField.bcpharmadik adatmezője a második oszlopra van leképezve,myTestSkipField.. FirstName - Az
myTestSkipField.bcpnegyedik adatmezője a harmadik oszlopra van leképezve,myTestSkipField.. LastName
XML-formátumfájl létrehozása
Részletes információkért tekintse át az XML-formátumfájlokat (SQL Server ). Az alábbi parancs a bcp segédprogram használatával hoz létre egy xml formátumú fájlt, myTestSkipField.xmla myTestSkipFieldsémája alapján.
- A minősítő
ckarakteradatok megadására szolgál -
t,egy vessző mezőhatárolóként való megadására szolgál -
Tmegbízható kapcsolat megadására szolgál az integrált biztonság használatával. - A
xminősítőt xml-alapú formátumfájl létrehozásához kell használni.
A parancssorban adja meg a következő parancsot:
bcp TestDatabase.dbo.myTestSkipField format nul -c -x -f D:\BCP\myTestSkipField.xml -t, -T
Az XML-formátumfájl módosítása
Tekintse át xml formátumú fájlok sémaszintaxisát, a terminológiát. Nyissa meg D:\BCP\myTestSkipField.xml a Jegyzettömbben, és hajtsa végre a következő módosításokat:
- Másolja ki a teljes második mezőt, és illessze be közvetlenül a második mező után a következő sorba.
- Növelje az
FIELD IDértéket 1-gyel az újhozFIELDés minden továbbihozFIELD. - Növelje az
COLUMN SOURCEértéket 1-selFirstName, ésLastNametükrözze a módosított leképezést.
Hasonlítsa össze a végrehajtott módosításokat:
előtt
<?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>
után
<?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>
A módosított formátumfájl a következőt tükrözi:
- 4 adatmező
-
FIELDAz 1-nekCOLUMNmegfelelő 1 az első táblaoszlopra van megfeleltetve,myTestSkipField.. PersonID -
FIELDA 2 nem felel meg egyikCOLUMNoszlopnak sem, ezért egyik táblaoszlopra sem van leképezve. -
FIELDA 3-nakCOLUMNmegfelelő 3 a második táblaoszlopra van megfeleltetve,myTestSkipField.. FirstName -
FIELDA 4-nekCOLUMNmegfelelő 4 a harmadik táblaoszlopra van megfeleltetve,myTestSkipField.. LastName
Adatok importálása formátumfájllal egy adatmező kihagyásához
A példák a cikkben létrehozott mintaadatbázist, adatfájlt és formátumfájlokat használják.
A bcp és a nem-XML formátumú fájl használata
A parancssorban adja meg a következő parancsot:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.fmt -T
Bcp- és XML-formátumú fájlok használata (SQL Server)
A parancssorban adja meg a következő parancsot:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.xml -T
A BULK INSERT (Transact-SQL) és a nem XML formátumú fájl használata
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
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;
TÖMEGES BESZÚRÁS (Transact-SQL) és XML-formátumú fájlok (SQL Server) használata
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
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;
OPENROWSET BULK (Transact-SQL) és nem XML formátumú fájl használata
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
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;
OPENROWSET BULK (Transact-SQL) és XML formátumú fájlok (SQL Server) használata
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
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;