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 a tábla megfelelő oszlopaitól eltérő sorrendben rendezett mezőket tartalmazhatnak. Ez a cikk nem XML- és XML-formátumú fájlokat is bemutat, amelyek úgy vannak módosítva, hogy egy olyan adatfájlt tartalmazzanak, amelynek mezői a táblaoszlopoktól eltérő sorrendben vannak elrendezve. A módosított formátumfájl megfelelteti az adatmezőket a megfelelő táblázatoszlopaiknak. További információért tekintse át Formátumfájl létrehozása bcp (SQL Server) használatával.
Nem XML- vagy XML-formátumú fájlokkal tömegesen importálhat adatfájlokat a táblába egy bcp segédprogram parancs, a BULK INSERT utasítás vagy az OPENROWSET BULK utasítás használatával. 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, 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 cikkben később definiált táblázaton és adatfájlon alapulnak.
Mintatábla
Az alábbi Transact-SQL szkript létrehoz egy tesztadatbázist és egy myRemapnevű táblát.
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE myRemap
(
PersonID SMALLINT,
FirstName VARCHAR (25),
LastName VARCHAR (30),
Gender CHAR (1)
);
Mintaadatfájl
Az alábbi adatok FirstName és LastName fordított sorrendjét mutatják be a myRemaptáblázatban bemutatottakhoz képest. Egy szövegszerkesztő, például a Jegyzettömb használatával hozzon létre egy üres fájlt D:\BCP\myRemap.bcp, és szúrja be a következő adatokat:
1,Grosse,Anthony,M
2,Fatnowna,Alica,F
3,Rosenhain,Stella,F
Formátumfájlok létrehozása
Ha tömegesen szeretne adatokat importálni a myRemap.bcp-ból a myRemap táblába, a formátumfájlnak a következő műveleteket kell végrehajtania:
- Képezze le az első adatmezőt az első oszlopra,
PersonID. - Térképezze fel a második adatmezőt a harmadik oszlopba,
LastName. - Képezd le a harmadik adatmezőt a második oszlopra
FirstName. - A negyedik adatmezőt képezze le a negyedik oszlopra,
Gender.
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 a Nem XML formátumú fájlok (SQL Server) használatát ismertető cikket. Az alábbi parancs a bcp segédprogram használatával hoz létre egy nem XML formátumú fájlt, myRemap.fmta myRemapsémája alapján. Emellett a minősítő c karakteradatok megadására, t, mezőkifejezésként vessző megadására, 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.myRemap format nul -c -f D:\BCP\myRemap.fmt -t, -T
A nem XML formátumú fájl módosítása
A terminológiával kapcsolatos információkért lásd nem XML formátumú fájlok struktúráját. Nyissa meg D:\BCP\myRemap.fmt a Jegyzettömbben, és hajtsa végre a következő módosításokat:
- Rendezze át a formátumfájl sorainak sorrendjét, hogy a sorok ugyanabban a sorrendben legyenek, mint a
myRemap.bcpadatai. - Győződjön meg arról, hogy a gazdagépfájl mezősorrend értékei szekvenciálisan következnek.
- Ellenőrizze, hogy az utolsó formátumfájl sor után van-e kocsivissza.
A módosítások összehasonlítása:
előtt
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 1 "\r\n" 4 Gender SQL_Latin1_General_CP1_CI_AS
után
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 30 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 1 "\r\n" 4 Gender SQL_Latin1_General_CP1_CI_AS
A módosított formátumfájl a következőt tükrözi:
- A
myRemap.bcpelső adatmezője az első oszlopra van leképezve,myRemap.. PersonID - A
myRemap.bcpmásodik adatmezője a harmadik oszlopra van leképezve,myRemap.. LastName - A
myRemap.bcpharmadik adatmezője a második oszlopra van leképezve,myRemap.. FirstName - Az
myRemap.bcpnegyedik adatmezője a negyedik oszlopra van leképezve,myRemap.. Gender
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, myRemap.xmla myRemapsémája alapján. Emellett a minősítő c karakteradatok megadására, t, mezőkifejezésként vessző megadására, T pedig megbízható kapcsolat megadására szolgál az integrált biztonság használatával. A x minő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.myRemap format nul -c -x -f D:\BCP\myRemap.xml -t, -T
Az XML-formátumfájl módosítása
A terminológiához tekintse át XML-formátumú fájlok sémaszintaxisát. Nyissa meg D:\BCP\myRemap.xml a Jegyzettömbben, és hajtsa végre a következő módosításokat:
Az a sorrend, amelyben a
<FIELD>elemek deklarálva vannak a formátumfájlban, az a sorrend, amelyben ezek a mezők megjelennek az adatfájlban. Így megfordíthatja az<FIELD>elemek sorrendjét a 2. és a 3. azonosító attribútummal.Győződjön meg arról, hogy az
<FIELD>azonosító attribútumértékek szekvenciálisak.Az elem elemeinek
<COLUMN><ROW>sorrendje határozza meg azt a sorrendet, amelyben a tömeges művelet elküldi őket a célnak. 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. Az elemek sorrendje<COLUMN>független a definíció elemeinek<FIELD><RECORD>sorrendjét. Minden<COLUMN>elem egy<FIELD>elemnek felel meg (amelynek azonosítója a<COLUMN>elem SOURCE attribútumában van megadva). Így az<COLUMN>SOURCE értékei az egyetlen olyan attribútumok, amelyek módosítást igényelnek. Fordítsa meg a<COLUMN>forrásattribútumok 2-es és 3-as sorrendjét.
A módosítások összehasonlítása:
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="," MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="1" 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"/>
<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
</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="30" 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="1" 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="2" NAME="LastName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
</ROW>
</BCPFORMAT>
A módosított formátumfájl a következőt tükrözi:
- Az 1. OSZLOPNAK megfelelő 1. MEZŐ leképeződik az első táblázatoszlopra,
myRemap.. PersonID - A 2. oszlopnak megfelelő 2. mező a harmadik táblaoszlopra van áthelyezve,
myRemap.. LastName - A 3. OSZLOPnak megfelelő 3. MEZŐ a második táblaoszlopra van megfeleltetve,
myRemap.. FirstName - A 4. oszlop rá van vetítve a negyedik táblázatoszlopra,
myRemap.. Gender
Adatok importálása formátumfájllal a táblaoszlopok adatfájlmezőbe való leképezéséhez
Az alábbi példák a korábban létrehozott adatbázist, adatfájlt és formátumfájlokat használják.
Bcp és nem XML formátumú fájl használata
A parancssorban adja meg a következő parancsot.
bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.fmt -T
BCP- és XML-formátumfájl használata
A parancssorban adja meg a következő parancsot.
bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.xml -T
A BULK INSERT és a nem XML formátumú fájl használata
Futtassa a következő Transact-SQL szkriptet.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap FROM 'D:\BCP\myRemap.bcp'
WITH (FORMATFILE = 'D:\BCP\myRemap.fmt');
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
A tömeges beszúrás és egy XML formátumú fájl használata
Futtassa a következő Transact-SQL szkriptet.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap FROM 'D:\BCP\myRemap.bcp'
WITH (FORMATFILE = 'D:\BCP\myRemap.xml');
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
OPENROWSET és nem XML formátumú fájl használata
Futtassa a következő Transact-SQL szkriptet.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myRemap.bcp',
FORMATFILE = 'D:\BCP\myRemap.fmt'
) AS t1;
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
OPENROWSET- és XML-formátumfájl használata
Futtassa a következő Transact-SQL szkriptet.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myRemap.bcp',
FORMATFILE = 'D:\BCP\myRemap.xml'
) AS t1;
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;