Megosztás a következőn keresztül:


Táblaoszlopok adatfájlmezőkre (SQL Server) való leképezése formátumfájl használatával

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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:

  1. Rendezze át a formátumfájl sorainak sorrendjét, hogy a sorok ugyanabban a sorrendben legyenek, mint a myRemap.bcpadatai.
  2. Győződjön meg arról, hogy a gazdagépfájl mezősorrend értékei szekvenciálisan következnek.
  3. 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.bcp első adatmezője az első oszlopra van leképezve, myRemap.. PersonID
  • A myRemap.bcp második adatmezője a harmadik oszlopra van leképezve, myRemap.. LastName
  • A myRemap.bcp harmadik adatmezője a második oszlopra van leképezve, myRemap.. FirstName
  • Az myRemap.bcp negyedik 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:

  1. 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.

  2. Győződjön meg arról, hogy az <FIELD> azonosító attribútumértékek szekvenciálisak.

  3. 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;