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


TÖMEGES BESZÚRÁS (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányRaktár a Microsoft Fabricben

Adatfájl importálása adatbázistáblába vagy nézetbe felhasználó által megadott formátumban az SQL Serverben.

Transact-SQL szintaxis konvenciók

Szemantika

BULK INSERT
   { database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }
      FROM 'data_file'
     [ WITH
    (
   [ [ , ] DATA_SOURCE = 'data_source_name' ]

   -- text formatting options
   [ [ , ] CODEPAGE = { 'RAW' | 'code_page' | 'ACP' | 'OEM' } ]
   [ [ , ] DATAFILETYPE = { 'char' | 'widechar' | 'native' | 'widenative' } ]
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]
   [ [ , ] FORMAT = 'CSV' ]
   [ [ , ] FIELDQUOTE = 'quote_characters' ]
   [ [ , ] FIRSTROW = first_row ]
   [ [ , ] LASTROW = last_row ]

   -- input file format options
   [ [ , ] FORMATFILE = 'format_file_path' ]
   [ [ , ] FORMATFILE_DATA_SOURCE = 'data_source_name' ]

   -- error handling options
   [ [ , ] MAXERRORS = max_errors ]
   [ [ , ] ERRORFILE = 'file_name' ]
   [ [ , ] ERRORFILE_DATA_SOURCE = 'errorfile_data_source_name' ]

   -- database options
   [ [ , ] KEEPIDENTITY ]
   [ [ , ] KEEPNULLS ]
   [ [ , ] FIRE_TRIGGERS ]
   [ [ , ] CHECK_CONSTRAINTS ]
   [ [ , ] TABLOCK ]

   -- source options
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ , ...n ] ) ]
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ]
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
   [ [ , ] BATCHSIZE = batch_size ]

    ) ]
BULK INSERT
   { database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }
      FROM 'data_file'
     [ WITH
    (
   [ [ , ] DATA_SOURCE = 'data_source_name' ]

   -- text formatting options
   [ [ , ] CODEPAGE = { 'code_page' | 'ACP' } ]
   [ [ , ] DATAFILETYPE = { 'char' | 'widechar' } ]
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]
   [ [ , ] FORMAT = { 'CSV' | 'PARQUET' } ]
   [ [ , ] FIELDQUOTE = 'quote_characters' ]
   [ [ , ] FIRSTROW = first_row ]
   [ [ , ] LASTROW = last_row ]

   -- input file format options
   [ [ , ] FORMATFILE = 'format_file_path' ]
   [ [ , ] FORMATFILE_DATA_SOURCE = 'data_source_name' ]

   -- error handling options
   [ [ , ] MAXERRORS = max_errors ]
   [ [ , ] ERRORFILE = 'file_name' ]
   [ [ , ] ERRORFILE_DATA_SOURCE = 'errorfile_data_source_name' ]

    ) ]

Érvek

Az BULK INSERT utasítás különböző argumentumokkal és lehetőségekkel rendelkezik a különböző platformokon. A különbségek az alábbi táblázatban vannak összefoglalva:

Tulajdonság SQL Server Azure SQL Database és felügyelt Azure SQL-példány Fabric adattárház
Adatforrás Helyi elérési út, hálózati elérési út (UNC) vagy Azure Storage Azure Storage Azure Storage, One Lake
Forráshitelesítés Windows-hitelesítés, SAS Microsoft Entra ID, SAS-jogkivonat, felügyelt identitás Microsoft Entra ID
Nem támogatott beállítások * Wildcard a Pathon, FORMAT = 'PARQUET' * Wildcard a Pathon, FORMAT = 'PARQUET' DATAFILETYPE = {'native' | 'widenative'}
Engedélyezett beállítások, de hatás nélkül KEEPIDENTITY, FIRE_TRIGGERS, CHECK_CONSTRAINTS, TABLOCK, ORDERROWS_PER_BATCH, , KILOBYTES_PER_BATCHés BATCHSIZE nem alkalmazható. Nem jeleznek szintaxishibát, de nincs hatásuk

database_name

Az adatbázis neve, amelyben a megadott tábla vagy nézet található. Ha nincs megadva, database_name az aktuális adatbázis.

schema_name

A tábla vagy a nézetséma nevét adja meg. schema_name nem kötelező, ha a tömeges importálási műveletet végrehajtó felhasználó alapértelmezett sémája a megadott tábla vagy nézet sémája. Ha nincs megadva séma , és a tömeges importálási műveletet végrehajtó felhasználó alapértelmezett sémája eltér a megadott táblától vagy nézettől, az SQL Server hibaüzenetet ad vissza, és a tömeges importálási műveletet megszakítja.

table_name

Megadja annak a táblának vagy nézetnek a nevét, amelybe tömegesen importálhat adatokat. Csak olyan nézetek használhatók, amelyekben az összes oszlop ugyanarra az alaptáblára hivatkozik. Az adatok nézetekbe való betöltésének korlátozásairól az INSERT című témakörben olvashat bővebben.

FROM "data_file"

A megadott táblába vagy nézetbe importálandó adatokat tartalmazó adatfájl teljes elérési útját adja meg.

BULK INSERT adatokat lehet importálni lemezről vagy Azure Storage-ról (beleértve a hálózatot, floppy lemezt, merevlemezt és így tovább).

BULK INSERT bing_covid_19_data
FROM 'C:\\bing_covid-19_data\public\curated\covid-19\latest\bing_covid-19_data.csv';

data_file meg kell adnia egy érvényes elérési utat attól a kiszolgálótól, amelyen az SQL Server fut. Ha data_file távoli fájl, adja meg az univerzális elnevezési konvenció (UNC) nevét. Az UNC névnek az űrlapja \\SystemName\ShareName\Path\FileNamevan. Például:

BULK INSERT bing_covid_19_data
FROM '\\ShareX\bing_covid-19_data\public\curated\covid-19\latest\bing_covid-19_data.csv';

Az Azure SQL Database és a Fabric Data Warehouse támogatja az URI-ből történő adatolvasást, de nem támogatják az on-premises fájlútvonalakat.

BULK INSERT bing_covid_19_data
FROM 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv';

Az SQL Server 2017-től (14.x) kezdve a data_file Azure Storage-ben is elérhető. Ebben az esetben a beállítást is meg kell adnia data_source_name . Például lásd: Adatimport fájlból az Azure Storage-ben.

A Fabric Data Warehouse két különböző útstílust támogat a forrásút megadásához:

  • https://<storage account>.blob.core.windows.net/<container name>/<path to file>
  • abfss://<container name>@<storage account>.dfs.core.windows.net/<path to file>

A Fabric Data Warehouse támogat * olyan vadkártyákat, amelyek bármely URI karakterhez illeszkedhetnek, és lehetővé teszik, hogy URI-mintát definiálj az importálandó fájlokhoz. Például:

BULK INSERT bing_covid_19_data
FROM 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/*.csv';

Megjegyzés:

Cserélje le <data-lake>.blob.core.windows.net a megfelelő URL-címre.

ADAT_FORRÁS

Érvényes: SQL Server 2017 (14.x) és újabb verziók, Azure SQL Database, valamint Warehouse in Microsoft Fabric.

Megad egy nevelt külső adatforrást, amely Azure Storage gyökérhelyére mutat a fájlimporthoz.

CREATE EXTERNAL DATA SOURCE pandemicdatalake
WITH (LOCATION = 'https://<data-lake>.blob.core.windows.net/public/');

Megjegyzés:

Cserélje le <data-lake>.blob.core.windows.net a megfelelő URL-címre.

További információ: KÜLSŐ ADATFORRÁS LÉTREHOZÁSA.

A mellékszálban lévő fájlútnak FROM relatív útnak kell lennie, amelyet a külső adatforrásban meghatározott gyökérhelyhez csatolnak.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, LASTROW = 100, FIELDTERMINATOR = ',');

Megjegyzés:

Az egyszerűség érdekében az alábbi példák relatív utakat és előre definiált külső adatforrásokat használnak..

CODEPAGE

Az adatfájlban lévő adatok kódlapját adja meg. CODEPAGE csak akkor releváns, ha az adatok karaktert, varchart vagy szövegoszlopot tartalmaznak, amelynek karakterértéke nagyobb vagy kisebb, mint 12732. Példa: Kódlap megadása.

BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, CODEPAGE = '65001');

CODEPAGE Az SQL Server 2017-hez készült Linuxon (14.x) nem támogatott lehetőség. AZ SQL Server 2019 (15.x) esetén csak a 'RAW' beállítás engedélyezett CODEPAGE.

A formátumfájl minden oszlopához meg kell adnia egy rendezési nevet.

CODEPAGE érték Leírás
ACP A karakter, a varchar vagy a szöveges adattípus oszlopai az ANSI/Microsoft Windows kódlapról (ISO 1252) konvertálódnak az SQL Server kódlapjára.
OEM (alapértelmezett) A rendszer a rendszerkódlapról az SQL Server kódlapjára konvertálja a karakter, a varchar vagy a OEM adattípus oszlopait.
RAW Nem történik átalakítás egyik kódlapról a másikra. RAW a leggyorsabb lehetőség.
code_page Adott kódlapszám, például 850.

Az SQL Server 2016 (13.x) előtti verziók nem támogatják a 65001-ös kódlapot (UTF-8 kódolás).
CODEPAGE érték Leírás
ACP A karakter, a varchar vagy a szöveges adattípus oszlopai az ANSI/Microsoft Windows kódlapról (ISO 1252) konvertálódnak az SQL Server kódlapjára.
code_page Adott kódlapszám, például 850.

Az SQL Server 2016 (13.x) előtti verziók nem támogatják a 65001-ös kódlapot (UTF-8 kódolás).

DATAFILETYPE

Megadja, hogy BULK INSERT a megadott adatfájltípus-érték használatával hajtja végre az importálási műveletet.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, DATAFILETYPE = 'char');

Megjegyzés:

Cserélje le <data-lake>.blob.core.windows.net a megfelelő URL-címre.

DATAFILETYPE érték Az összes adat, amely a következő helyen jelenik meg:
char (alapértelmezett) Karakterformátum.

További információért lásd: Használd karakter formátumot adatimportáláshoz vagy exportáláshoz.
widechar Unicode-karakterek.

További információért lásd: Használj Unicode karakterformátumot adatimportáláshoz vagy exportáláshoz.
native Natív (adatbázis-) adattípusok. Hozza létre a natív adatfájlt úgy, hogy tömegesen importál adatokat az SQL Serverről a bcp segédprogrammal.

A natív érték nagyobb teljesítményt kínál a karakterérték helyett. Natív formátum akkor ajánlott, ha tömegesen továbbít adatokat az SQL Server több példánya között egy olyan adatfájl használatával, amely nem tartalmaz kiterjesztett/kétbájtos karakterkészletet (DBCS) karaktereket.

További információért lásd: Használj natív formátumot adatimportáláshoz vagy exportáláshoz.
widenative Natív (adatbázis-) adattípusok, kivéve a karakter, a varchar és a szöveges oszlopokat, amelyekben az adatok Unicode-ként lesznek tárolva. Hozza létre az widenative adatfájlt úgy, hogy tömegesen importál adatokat az SQL Serverről a bcp segédprogrammal.

Az widenative érték nagyobb teljesítményt kínál a widechar. Ha az adatfájl kiterjesztett ANSI-karaktereket tartalmaz, adja meg widenative.

További információért lásd: Use Unicode Native Format to Importor or Export Data (Használj Unicode Native Format) adatimportot vagy exportt.
DATAFILETYPE érték Az összes adat, amely a következő helyen jelenik meg:
char (alapértelmezett) Karakterformátum.

További információért lásd: Használd karakter formátumot adatimportáláshoz vagy exportáláshoz.
widechar Unicode-karakterek.

További információért lásd: Használj Unicode karakterformátumot adatimportáláshoz vagy exportáláshoz.

MAXERRORS

Megadja az adatokban megengedett szintaxishibák maximális számát a tömeges importálási művelet megszakítása előtt. A tömeges importálási művelet nem importálható sorokat figyelmen kívül hagyja, és egyetlen hibának számít. Ha max_errors nincs megadva, az alapértelmezett érték 10.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', MAXERRORS = 0);

Ez MAX_ERRORS az opció nem vonatkozik a korlátozási ellenőrzésekre vagy a pénz - és bigint adattípusok átalakítására.

HIBAFÁJL

Megadja azt a fájlt, amely formázási hibákat tartalmazó sorok gyűjtésére szolgál, és nem konvertálható OLE DB-sorkészletté. Ezeket a sorokat a rendszer a hibafájlba másolja a "ahogy van" adatfájlból.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake',
      ERRORFILE = 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/errors');

Megjegyzés:

Cserélje le <data-lake>.blob.core.windows.net a megfelelő URL-címre.

A hibafájl a parancs végrehajtásakor jön létre. Hiba történik, ha a fájl már létezik. Emellett létrejön egy bővítményt .ERROR.txt tartalmazó vezérlőfájl is, amely a hibafájl minden sorára hivatkozik, és hibadiagnosztikát biztosít. A hibák kijavítása után az adatok betölthetők.

Az SQL Server 2017-től (14.x) kezdve a error_file_path Azure Storage-ben található.

ERRORFILE_DATA_SOURCE

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók.

Megad egy nevelt külső adatforrást, amely a hibafájl Azure Storage helyére mutat, hogy nyomon kövesse az importálás során talált hibákat.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
    DATA_SOURCE = 'pandemicdatalake',
    ERRORFILE = 'curated/covid-19/bing_covid-19_data/latest/errors',
    ERRORFILE_DATA_SOURCE = 'pandemicdatalake'
);

További részletekért a külső adatforrások létrehozásáról lásd: KÜLSŐ ADATFORRÁS LÉTREHOZÁSA.

ELSŐ SOR

Megadja az első betöltendő sor számát. Az alapértelmezett érték a megadott adatfájl első sora. FIRSTROW 1-alapú.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2);

Az FIRSTROW attribútum nem az oszlopfejlécek kihagyására szolgál. Az BULK INSERT utasítás nem támogatja a fejlécek kihagyását. Ha úgy dönt, hogy kihagyja a sorokat, az SQL Server adatbázismotor csak a mező terminátorait tekinti meg, és nem ellenőrzi a kihagyott sorok mezőiben lévő adatokat.

LASTROW

Az utolsó betöltendő sor számát adja meg. Az alapértelmezett érték 0, amely a megadott adatfájl utolsó sorát jelzi.

BATCHSIZE

A köteg sorainak számát adja meg. Minden köteg egyetlen tranzakcióként lesz átmásolva a kiszolgálóra. Ha ez nem sikerül, az SQL Server minden köteghez véglegesíti vagy visszaállítja a tranzakciót. Alapértelmezés szerint a megadott adatfájl összes adata egy köteg. A teljesítménnyel kapcsolatos szempontokról a cikk későbbi, teljesítménybeli szempontjait ismertető cikkben talál további információt.

ELLENŐRZÉSI_KORLÁTOK

Megadja, hogy a céltábla vagy nézet összes korlátozását ellenőrizni kell a tömeges importálási művelet során. A beállítás nélkül a CHECK_CONSTRAINTS rendszer figyelmen kívül hagyja az esetleges CHECK korlátozásokat FOREIGN KEY , és a művelet után a tábla kényszere nem megbízhatóként lesz megjelölve.

UNIQUE és PRIMARY KEY a korlátozások mindig érvényesítve vannak. Ha kényszerrel NOT NULL definiált karakteroszlopba importál, egy üres sztringet szúr be, BULK INSERT ha nincs érték a szövegfájlban.

Egy bizonyos ponton meg kell vizsgálnia az egész táblára vonatkozó korlátozásokat. Ha a tábla nem volt üres a tömeges importálási művelet előtt, a kényszer újraértékelésének költsége meghaladhatja a növekményes adatokra vonatkozó korlátozások alkalmazásának CHECK költségét.

Ha a bemeneti adatok olyan sorokat tartalmaznak, amelyek sértik a korlátozásokat, előfordulhat, hogy le szeretné tiltani a korlátozásokat (az alapértelmezett viselkedést). Ha CHECK a korlátozások le vannak tiltva, importálhatja az adatokat, majd Transact-SQL utasításokkal eltávolíthatja az érvénytelen adatokat.

Megjegyzés:

A MAXERRORS beállítás nem vonatkozik a kényszerellenőrzésre.

TŰZ_RIASZTÁS_INDÍTÓK

Megadja, hogy a céltáblán definiált beszúrási eseményindítók a tömeges importálási művelet során futnak. Ha az eseményindítók a céltáblán lévő műveletekhez INSERT vannak definiálva, minden befejezett köteghez aktiválódnak.

Ha FIRE_TRIGGERS nincs megadva, nem hajtanak végre beszúrási eseményindítókat.

KEEPIDENTITY

Megadja, hogy az importált adatfájlban lévő identitásértéket vagy értékeket kell használni az identitásoszlophoz. Ha KEEPIDENTITY nincs megadva, a rendszer ellenőrzi az oszlop identitásértékeit, de nem importálja, és az SQL Server automatikusan egyedi értékeket rendel hozzá a tábla létrehozása során megadott mag- és növekményértékek alapján. Ha az adatfájl nem tartalmazza a tábla vagy nézet identitásoszlopának értékeit, egy formátumfájl használatával adja meg, hogy a tábla vagy nézet identitásoszlopát kihagyja az adatok importálása során; Az SQL Server automatikusan egyedi értékeket rendel az oszlophoz. További információ: DBCC CHECKIDENT.

További információért lásd: az azonosító értékek megőrzéséről lásd: Azonosító értékek megőrzése adatok tömeges importáláskor.

KEEPNULL ÉRTÉKEK

Azt határozza meg, hogy az üres oszlopok a tömeges importálási művelet során null értéket tartsanak meg ahelyett, hogy az oszlopok alapértelmezett értékeit beszúrták volna. További információért lásd: Null vagy alapértelmezett értékek megőrzése a tömeges importálás során.

KILOBYTES_PER_BATCH

A kötegenkénti adatok kb. kilobájtos (KB) számát adja meg kilobytes_per_batch. Alapértelmezés szerint a KILOBYTES_PER_BATCH ismeretlen. A teljesítménnyel kapcsolatos szempontokról a cikk későbbi, teljesítménybeli szempontjait ismertető cikkben talál további információt.

ORDER

Az adatfájlban lévő adatok rendezésének módját adja meg. A tömeges importálás teljesítménye javul, ha az importált adatok rendezése a tábla fürtözött indexe szerint történik, ha van ilyen. Ha az adatfájl a fürtözött indexkulcs sorrendjén kívüli sorrendbe van rendezve, vagy ha nincs fürtözött index a táblában, a ORDER záradék figyelmen kívül lesz hagyva. A megadott oszlopneveknek érvényes oszlopneveknek kell lenniük a céltáblában. A tömeges beszúrás művelet alapértelmezés szerint azt feltételezi, hogy az adatfájl nincs rendezve. Az optimalizált tömeges importáláshoz az SQL Server azt is ellenőrzi, hogy az importált adatok rendezése megtörtént-e.

n egy helyőrző, amely azt jelzi, hogy több oszlop is megadható.

ROWS_PER_BATCH

Az adatfájlban lévő adatsorok hozzávetőleges számát jelzi.

Alapértelmezés szerint az adatfájl összes adata egyetlen tranzakcióként lesz elküldve a kiszolgálónak, és a köteg sorainak száma ismeretlen a lekérdezésoptimalizáló számára. Ha 0 értéket ROWS_PER_BATCH ad meg > , a kiszolgáló ezt az értéket használja a tömeges importálási művelet optimalizálásához. A megadott ROWS_PER_BATCH értéknek hozzávetőlegesen meg kell egyeznie a sorok tényleges számával. A teljesítménnyel kapcsolatos szempontokról a cikk későbbi, teljesítménybeli szempontjait ismertető cikkben talál további információt.

TABLOCK

Megadja, hogy a rendszer táblaszintű zárolást szerezzen be a tömeges importálási művelet időtartamára. Egy táblát egyszerre több ügyfél is betölthet, ha a tábla nem tartalmaz indexeket, és TABLOCK meg van adva. Alapértelmezés szerint a zárolási viselkedést a táblabeállítás táblazárolása határozza meg tömeges terhelés esetén. Ha a zárolást a tömeges importálási művelet időtartama alatt tartja, azzal csökkenti a zárolási versengést a táblában, bizonyos esetekben jelentősen javíthatja a teljesítményt. A teljesítménnyel kapcsolatos szempontokról a cikk későbbi, teljesítménybeli szempontjait ismertető cikkben talál további információt.

Az oszlopcentrikus indexek zárolási viselkedése eltérő, mivel belsőleg több sorhalmazra van osztva. Minden szál kizárólag az egyes sorokba tölti be az adatokat, ha kizárólagos (X) zárolást használ a sorkészleten, amely lehetővé teszi a párhuzamos adatbetöltést egyidejű adatbetöltési munkamenetekkel. A beállítás használata TABLOCK miatt a szál kizárólagos zárolást alkalmaz a táblán (ellentétben a hagyományos sorok tömeges frissítési (BU) zárolásával), amely megakadályozza, hogy más egyidejű szálak egyidejűleg betöltse az adatokat.

Bemeneti fájlformátum beállításai

FORMAT

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók.

Az RFC 4180 szabványnak megfelelő vesszővel tagolt értékfájlt ad meg.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FORMAT = 'CSV');

A Fabric Data Warehouse-ban az BULK INSERT utasítás ugyanazokat a formátumokat támogatja, mint az állítás COPY INTO , így FORMAT = 'PARQUET' támogatott.

FIELDQUOTE

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók.

A CSV-fájlban idézőjelként használandó karaktert adja meg. Ha nincs megadva, a rendszer az " szabványban meghatározott idézőjelet () használja idézőjelként.

FORMATFILE

Egy formátumfájl teljes elérési útját adja meg. A formátumfájl azt az adatfájlt írja le, amely ugyanazon a táblán vagy nézetben a bcp segédprogrammal létrehozott tárolt válaszokat tartalmazza.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake',
      FORMATFILE = 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.fmt');

Megjegyzés:

Cserélje le <data-lake>.blob.core.windows.net a megfelelő URL-címre.

A formátumfájlt akkor kell használni, ha:

  • Az adatfájl nagyobb vagy kevesebb oszlopot tartalmaz, mint a tábla vagy a nézet.
  • Az oszlopok eltérő sorrendben vannak.
  • Az oszlophatárolók eltérőek.
  • Az adatformátumban más változások is vannak. A formátumfájlok általában a bcp segédprogrammal jönnek létre, és szükség szerint szövegszerkesztővel vannak módosítva. További információért lásd: bcp Utility és Create a format file with bcp.

Az SQL Server 2017-től (14.x) kezdve, és Azure SQL Database-ben format_file_path is lehet Azure Storage-ben.

FORMATFILE_DATA_SOURCE

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók.

Megad egy nevelt külső adatforrást, amely a formátumfájl Azure Storage helyére mutat az importált adatok sémájának meghatározására.

BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
    DATA_SOURCE = 'pandemicdatalake',
    FORMATFILE = 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.fmt',
    FORMATFILE_DATA_SOURCE = 'pandemicdatalake'
);

MEZŐGÉP

Megadja a mezőterminátort char , amelyhez használni fog, és widechar az adatfájlokat. Az alapértelmezett mezőkifejezés a \t (tabulátor karakter). További információ: Mező- és sorkifejezések megadása.

BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIELDTERMINATOR = ',', FIRSTROW = 2);

ROWTERMINATOR

Megadja a sorterminátort char , amelyhez használni fog, és widechar az adatfájlokat.

BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', ROWTERMINATOR = '\r\n', FIRSTROW = 2);

Az alapértelmezett sorterminátor ( \r\n carriage return and newline character). További információ: Mező- és sorkifejezések megadása.

Kompatibilitás

BULK INSERT Szigorú adatérvényesítést és adatellenőrzést kényszerít ki egy fájlból beolvasott adatokra, amelyek miatt a meglévő szkriptek meghiúsulhatnak, ha érvénytelen adatokon hajtják végre őket. Például ellenőrzi, BULK INSERT hogy:

  • A lebegőpontos vagy valós adattípusok natív ábrázolása érvényes.
  • A Unicode-adatok páros bájthosszúságúak.

Adattípusok

Sztring-tizedes adattípus konvertálása

A sztring-decimális adattípus-átalakítások BULK INSERT ugyanazokat a szabályokat követik, mint a Transact-SQL KONVERTÁLÁS függvény, amely elutasítja a tudományos jelölést használó numerikus értékeket képviselő sztringeket. Ezért az ilyen sztringeket érvénytelen értékekként kezeli, BULK INSERT és konverziós hibákat jelent.

Ennek a viselkedésnek a megkerüléséhez használjon formátumfájlt a tudományos jelölések lebegőpontos adatainak tömeges importálásához egy tizedesoszlopba. A formátumfájlban explicit módon írja le az oszlopot valós vagy lebegőpontos adatokként. További információ ezekről az adattípusokról: lebegőpontos és valós.

A formátumfájlok valós adatokat jelölnek SQLFLT4 adattípusként, a lebegőpontos adatokat pedig SQLFLT8 adattípusként. A nem-XML formátumú fájlokról információért lásd: Fájltároló típus bcp használatával.

Példa tudományos jelölést használó numerikus érték importálására

Ez a példa a következő táblát használja az bulktest adatbázisban:

CREATE TABLE dbo.t_float
(
    c1 FLOAT,
    c2 DECIMAL (5, 4)
);

A felhasználó tömegesen szeretne adatokat importálni a t_float táblába. Az adatfájl tudományos C:\t_float-c.datjelölésű lebegőpontos adatokat tartalmaz, például:

8.0000000000000002E-2 8.0000000000000002E-2

A minta másolásakor vegye figyelembe a különböző szövegszerkesztőket és kódolásokat, amelyek szóközként menti a tabulátor karaktereket (\t). A minta későbbi részében egy tabulátor karaktert kell megadni.

BULK INSERT Ezeket az adatokat azonban nem lehet közvetlenül t_floatimportálni, mert a második oszlopa c2a decimális adattípust használja. Ezért szükség van egy formátumfájlra. A formátumfájlnak le kell képeznie a tudományos jelölés lebegőpontos adatait az oszlop c2decimális formátumára.

A következő formátumfájl a SQLFLT8 adattípust használja a második adatmező második oszlopra való leképezéséhez:

<?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="30" />
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30" />
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8" />
    <COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8" />
  </ROW>
</BCPFORMAT>

Ha ezt a formátumfájlt (a fájlnevet C:\t_floatformat-c-xml.xmlhasználva) szeretné importálni a tesztadatokat a teszttáblába, adja ki a következő Transact-SQL utasítást:

BULK INSERT bulktest.dbo.t_float
FROM 'C:\t_float-c.dat'
WITH (FORMATFILE = 'C:\t_floatformat-c-xml.xml');

Fontos

Az Azure SQL Database és Fabric Data Warehouse csak az URI-ből (például Azure Storage) történő olvasást támogatja.

Adattípusok SQLXML-dokumentumok tömeges exportálásához vagy importálásához

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:

Adattípus Hatás
SQLCHAR vagy SQLVARCHAR Az adatokat az ügyfélkódlapon vagy a rendezés által sugallt kódlapon küldi el a rendszer. Az effektus megegyezik a DATAFILETYPE = 'char' formátumfájl megadása nélkül megadott effektussal.
SQLNCHAR vagy SQLNVARCHAR Az adatok Unicode formátumban lesznek elküldve. Az effektus megegyezik a DATAFILETYPE = 'widechar' formátumfájl megadása nélkül megadott effektussal.
SQLBINARY vagy SQLVARBIN Az adatok konvertálás nélkül lesznek elküldve.

Megjegyzések

Az utasítás, az BULK INSERT utasítás és a INSERT ... SELECT * FROM OPENROWSET(BULK...) parancs összehasonlításához bcp lásd: Adat tömeges importálása és exportja.

További információ az adatok tömeges importálásra való előkészítéséről: Adatok előkészítése tömeges exportálásra vagy importálásra.

Az BULK INSERT utasítás egy felhasználó által definiált tranzakción belül végrehajtható, hogy adatokat importáljon egy táblába vagy nézetbe. Ha több egyezést szeretne használni az adatok tömeges importálásához, a tranzakció megadhatja a BATCHSIZE záradékot az BULK INSERT utasításban. Több köteges tranzakció visszagördülése esetén az SQL Servernek küldött összes köteg vissza lesz állítva.

Interoperabilitás

Adatok importálása CSV-fájlból

Az SQL Server 2017-től (14.x) BULK INSERT kezdve a CSV formátumot is támogatja, ahogyan az Azure SQL Database is.

Az SQL Server 2017 (14.x) előtt az SQL Server tömeges importálási műveletei nem támogatják a vesszővel elválasztott értékeket (CSV-fájlokat). Bizonyos esetekben azonban egy CSV-fájl használható adatfájlként az adatok SQL Serverbe történő tömeges importálásához. Az adatok CSV-adatfájlból való importálásának követelményeiről további információt az Adatok előkészítése tömeges exportáláshoz vagy importáláshoz című témakörben talál.

Napló viselkedése

Az SQL Serverbe tömeges importálással végrehajtott sorbeszúrási műveletek tranzakciónaplóba való naplózásának időpontjáról további információt a tömeges importálás minimális naplózásának előfeltételei című témakörben talál. Az Azure SQL Database nem támogatja a minimális naplózást.

Korlátozások

Formátumfájl használata BULK INSERTesetén legfeljebb 1024 mezőt adhat meg. Ez megegyezik a táblákban megengedett oszlopok maximális számával. Ha 1024-nél több mezőt tartalmazó adatfájlt BULK INSERT tartalmazó formátumfájlt használ, BULK INSERT akkor a 4822-s hiba jelenik meg. A bcp segédprogram nem rendelkezik ezzel a korlátozással, ezért az 1024-nél több mezőt BULK INSERT tartalmazó adatfájlok esetén használja formátumfájl nélkül vagy a bcp parancsot.

Teljesítménnyel kapcsolatos szempontok

Ha az egyetlen kötegben kiürítendő lapok száma meghaladja a belső küszöbértéket, előfordulhat, hogy a pufferkészlet teljes vizsgálata alapján megállapítható, hogy mely oldalak legyenek kiürítve a köteg véglegesítésekor. Ez a teljes vizsgálat ronthatja a tömeges importálás teljesítményét. A belső küszöbérték túllépésének valószínű esete akkor fordul elő, ha egy nagy pufferkészlet lassú I/O-alrendszerrel van kombinálva. A puffer túlcsordulásának elkerülése érdekében a nagy gépeken ne használja a TABLOCK tippet (amely eltávolítja a tömeges optimalizálásokat), vagy használjon kisebb kötegméretet (ami megőrzi a tömeges optimalizálást).

Az adatbetöltéssel tesztelje a különböző kötegméreteket, hogy megtudja, mi működik a legjobban. Ne feledje, hogy a köteg méretének részleges visszaállítási következményei vannak. Ha a folyamat meghiúsul, és az ismételt használat BULK INSERT előtt további manuális munkát kell végeznie a sikeresen beszúrt sorok egy részének eltávolításához, mielőtt hiba történt volna.

Az Azure SQL Database használatával fontolja meg az adatbázis vagy példány teljesítményszintjének ideiglenes növelését az importálás előtt, ha nagy mennyiségű adatot importál.

Biztonság

Biztonsági fiók delegálása (megszemélyesítés)

Ha egy felhasználó SQL Server-bejelentkezést használ, a rendszer az SQL Server-folyamatfiók biztonsági profilját használja. Az SQL Server-hitelesítést használó bejelentkezések nem hitelesíthetők az adatbázismotoron kívül. Ezért ha egy BULK INSERT parancsot SQL Server-hitelesítéssel történő bejelentkezés indít el, az adatokhoz való kapcsolódás az SQL Server-folyamatfiók (az SQL Server Adatbázismotor szolgáltatás által használt fiók) biztonsági környezetével történik.

A forrásadatok sikeres olvasásához hozzáférést kell adnia az SQL Server adatbázismotor által használt fióknak a forrásadatokhoz. Ezzel szemben, ha egy SQL Server-felhasználó a Windows-hitelesítéssel jelentkezik be, a felhasználó csak azokat a fájlokat olvassa be, amelyeket a felhasználói fiók érhet el, függetlenül az SQL Server-folyamat biztonsági profiljától.

Amikor BULK INSERT vagy osql használatával hajtja végre az utasítást, az egyik számítógépről adatokat szúr be az SQL Serverbe egy második számítógépen, és megad egy data_file a harmadik számítógépen EGY UNC-elérési út használatával, 4861-es hiba jelenhet meg.

A hiba megoldásához használja az SQL Server-hitelesítést, és adjon meg egy SQL Server-bejelentkezést, amely az SQL Server-folyamatfiók biztonsági profilját használja, vagy konfigurálja a Windowst a biztonsági fiókok delegálásának engedélyezéséhez. A felhasználói fiókok delegáláshoz való megbízhatóságának engedélyezéséről a Windows súgójában talál további információt.

Erről és a használat BULK INSERTegyéb biztonsági szempontjairól további információt a TÖMEGES BESZÚRÁS vagy AZ OPENROWSET(BULK...) használata az ADATOK SQL Serverbe való importálásához című témakörben talál.

Ha az Azure Storage-ból importálsz, és az adatok nem nyilvánosak (névtelen hozzáférés), hozz létre egy DATABASE SCOPED CREDENTIAL-ot , amely egy SAS kulcs alapján titkosított adatbázis master kulmilla (DMK), majd hozz létre egy külső adatbázis forrást a parancsodhoz BULK INSERT .

Másik lehetőségként hozzon létre egy DATABASE SCOPED CREDENTIAL-t a MANAGED IDENTITY nem nyilvános tárfiókok adathozzáférési kérelmeinek engedélyezéséhez. Használatkor MANAGED IDENTITYaz Azure Storage-nek engedélyeket kell adnia az instance menedzselt identitásának azzal, hogy hozzáadja a Storage Blob Data Contributor beépített Azure szerepalapú hozzáférés-vezérlési (RBAC) szerepet, amely olvasási/írási hozzáférést biztosít a kezelt identitáshoz a szükséges Azure Storage konténerekhez. Az Azure SQL Managed Instance rendszer által hozzárendelt felügyelt identitással rendelkezik, és egy vagy több felhasználó által hozzárendelt felügyelt identitással is rendelkezhet. A kérések engedélyezéséhez használhat rendszer által hozzárendelt felügyelt identitásokat vagy felhasználó által hozzárendelt felügyelt identitásokat. Az engedélyezéshez a default felügyelt példány identitása lesz használva (vagyis az elsődleges, felhasználó által hozzárendelt felügyelt identitás, vagy rendszer által hozzárendelt felügyelt identitás, ha nincs megadva a felhasználó által hozzárendelt felügyelt identitás). Például lásd: Adatimport fájlból az Azure Storage-ben.

Fontos

A Managed Identity Azure SQL-re, SQL Server 2025 (17.x) és újabb verziókra vonatkozik.

Engedélyek

Az alábbi engedélyek arra a helyre vonatkoznak, ahol az adatokat tömegesen importálják (a cél).

Szükséges INSERT és ADMINISTER BULK OPERATIONS engedélyek. Az Azure SQL Database-ben INSERT és ADMINISTER DATABASE BULK OPERATIONS engedélyekre van szükség. ADMINISTER BULK OPERATIONS a linuxos SQL Server nem támogatja az engedélyeket vagy a bulkadmin szerepkört. Linuxon csak a sysadmin végezhet tömeges beszúrásokat az SQL Serverhez.

Emellett engedélyre van szükség, ALTER TABLE ha az alábbi feltételek közül egy vagy több teljesül:

  • Korlátozások léteznek, és a CHECK_CONSTRAINTS beállítás nincs megadva.

    A korlátozások letiltása az alapértelmezett viselkedés. A korlátozások explicit ellenőrzéséhez használja a CHECK_CONSTRAINTS lehetőséget.

  • Az eseményindítók léteznek, és a FIRE_TRIGGER beállítás nincs megadva.

    Alapértelmezés szerint az indítók nem lépnek működésbe. Ha explicit módon szeretné aktiválni az eseményindítókat, használja a FIRE_TRIGGER lehetőséget.

  • Ezzel a KEEPIDENTITY beállítással importálhat identitásértéket az adatfájlból.

Példák

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

Fontos

Az Azure SQL Database és Fabric Warehouse csak Azure Storage-ből olvasható.

Egy. Adatok importálása fájlokból csövek használatával

Az alábbi példa a rendelés részletes adatait importálja a AdventureWorks2022.Sales.SalesOrderDetail táblába a megadott adatfájlból egy csővel (|) a mező terminátoraként és |\n a sor terminátoraként.

BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH (FIELDTERMINATOR = ' |', ROWTERMINATOR = ' |\n');

B. A FIRE_TRIGGERS argumentum használata

Az alábbi példa az argumentumot FIRE_TRIGGERS adja meg.

BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH (FIELDTERMINATOR = ' |', ROWTERMINATOR = ':\n', FIRE_TRIGGERS);

C. Vonalcsatorna használata sor-terminátorként

Az alábbi példa egy olyan fájlt importál, amely sorvégzőként használja a sorcsatornát, például UNIX-kimenetként:

DECLARE @bulk_cmd AS VARCHAR (1000);

SET @bulk_cmd = 'BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>''
WITH (ROWTERMINATOR = ''' + CHAR(10) + ''')';

EXECUTE (@bulk_cmd);

Megjegyzés:

Windows \n rendszeren a rendszer automatikusan lecseréli a következőre \r\n: .

D. Adjon meg egy kódlapot

Az alábbi példa egy kódlap megadását mutatja be.

BULK INSERT MyTable
FROM 'D:\data.csv'
WITH (CODEPAGE = '65001', DATAFILETYPE = 'char', FIELDTERMINATOR = ',');

E. Adatok importálása CSV-fájlból

Az alábbi példa bemutatja, hogyan adhat meg egy CSV-fájlt, kihagyva a fejlécet (első sort) ; mező-terminátorként és 0x0a sorkifejezőként:

BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDQUOTE = '\',
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '0x0a'
);

Az alábbi példa bemutatja, hogyan adhatja meg a CSV-fájlokat UTF-8 formátumban (az egyiket használva CODEPAGE65001), hogyan kihagyhatja a fejlécet (az első sort), hogyan használhatja ; a mező terminátoraként és 0x0a sor terminátoraként:

BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (
    CODEPAGE = '65001',
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDQUOTE = '\',
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '0x0a'
);

F. Import data from a file in Azure Storage

Adat betöltése CSV-ből Azure Storage-ban SAS tokenrel

Az alábbi példa bemutatja, hogyan tölthetsz adatokat egy CSV fájlból egy Azure Storage helyszínen, ahol megosztott hozzáférési aláírást (SAS) hoztál létre. Az Azure Storage helyszíne külső adatforrásként van konfigurálva, amelyhez egy adatbázis-scope-ra szabott hitelesítés szükséges, amely SAS kulcsot használ, amelyet a felhasználói adatbázisban lévő DMK-val titkosítanak.

Megjegyzés:

Győződj meg róla, hogy nincs vezető ? a SAS tokenben, és legalább olvasási engedélyed van arra az objektumra, amit be kell tölteni srt=o&sp=r, és hogy a lejárati idő érvényes (minden dátum UTC időben van).

(Opcionális) DMK nem szükséges, ha a DATABASE SCOPED CREDENTIAL nem szükséges, mert a blob nyilvános (anonim) hozzáférésre van konfigurálva.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

(Opcionális) Az A DATABASE SCOPED CREDENTIAL nem szükséges, mert a blob nyilvános (anonim) hozzáférésre van konfigurálva.

Ne tegyél be vezető ? jegyet a SAS tokenben. Győződj meg róla, hogy legalább olvasási engedélyed van arra az objektumra, amit be kell tölteni (srt=o&sp=r), és hogy a lejárati időszak érvényes (minden dátum UTC időben van).

CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = '******srt = sco&sp = rwac&se = 2017-02-01T00:55:34Z&st = 2016-12-29T16:55:34Z***************';

Megjegyzés:

CREDENTIAL nem szükséges, ha egy blob nyilvános (névtelen) hozzáférésre van konfigurálva.

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://****************.blob.core.windows.net/invoices',
    CREDENTIAL = MyAzureBlobStorageCredential
);

BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (DATA_SOURCE = 'MyAzureBlobStorage');

Adat betöltése CSV-ből Azure Storage-ben egy menedzselt identitással

Az alábbi példa bemutatja, hogyan lehet a BULK INSERT parancsot használni egy CSV fájlból történő adatok betöltésére Azure Storage helyszínen Managed Identity használatával. Az Azure Storage helyszíne külső adatforrásként van konfigurálva.

(Opcionális) DMK nem szükséges, ha a DATABASE SCOPED CREDENTIAL nem szükséges, mert a blob nyilvános (anonim) hozzáférésre van konfigurálva.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

(Opcionális) Az A DATABASE SCOPED CREDENTIAL nem szükséges, mert a blob nyilvános (anonim) hozzáférésre van konfigurálva:

CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'Managed Identity';

Engedélyezze a Storage Blob Data Contributor szerepet, hogy olvasási/írási hozzáférést biztosítson a kezelt identitáshoz a szükséges Azure Storage konténerekhez.

Megjegyzés:

CREDENTIAL nem szükséges, ha egy blob nyilvános (névtelen) hozzáférésre van konfigurálva.

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://****************.blob.core.windows.net/invoices',
    CREDENTIAL = MyAzureBlobStorageCredential
);

BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (DATA_SOURCE = 'MyAzureBlobStorage');

Fontos

A menedzselt identitás SQL Server 2025 (17.x) és újabb verziókra, valamint Azure SQL-re vonatkozik.

G. Importálj adatokat egy fájlból az Azure Storage-ben, és jelölj meg hibafájlt

Az alábbi példa bemutatja, hogyan lehet adatokat tölteni egy CSV fájlból Azure Storage helyszínen, amely külső adatforrásként van konfigurálva, valamint hibafájlt is megadva. Adatbázis-hatókörű hitelesítő adatokra van szüksége egy közös hozzáférésű jogosultságkód használatával. Ha Azure SQL Database-en fut, a ERRORFILE opcióhoz hozzá kell ERRORFILE_DATA_SOURCErendelni, különben az import meghibásodhat jogosultsági hibával. A megadott ERRORFILE fájl nem lehet a tárolóban.

BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (
    DATA_SOURCE = 'MyAzureInvoices',
    FORMAT = 'CSV',
    ERRORFILE = 'MyErrorFile',
    ERRORFILE_DATA_SOURCE = 'MyAzureInvoices'
);

A teljes BULK INSERT példákért, beleértve a hitelesítés és a külső adatforrás konfigurálását, lásd: Példák az Azure Storage adatfolyamos hozzáférésére.

További példák

További BULK INSERT példákat a következő cikkekben talál: