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)
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.
Jegyzet
Ha az SQL Server több példánya közötti adattovábbításhoz kiterjesztett vagy DBCS-karaktereket tartalmazó adatfájlt szeretne használni, a Unicode natív formátumot kell használnia. További információ: Unicode natív formátum használata adatok importálásához vagy exportálásához (SQL Server).
A natív formátum fenntartja az adatbázisok natív adattípusait. A natív formátum az SQL Server-táblák közötti nagy sebességű adatátvitelre szolgál. Formátumfájl használata esetén a forrás- és céltábláknak nem kell azonosnak lenniük. Az adatátvitel két lépésből áll:
Adatok tömeges exportálása forrástáblából egy adatfájlba
Adatok tömeges importálása az adatfájlból a céltáblába
Az azonos táblák közötti natív formátum használata elkerüli az adattípusok karakterformátumra és karakterformátumból való szükségtelen átalakítását, időt és helyet takarítva meg. Az optimális átviteli sebesség elérése érdekében azonban kevés ellenőrzést hajtunk végre az adatformázással kapcsolatban. A betöltött adatokkal kapcsolatos problémák megelőzéséhez tekintse meg a következő korlátozások listáját.
Korlátozások
Ha natív formátumban szeretne adatokat importálni, győződjön meg arról, hogy:
Az adatfájl natív formátumú.
A céltáblának kompatibilisnek kell lennie az adatfájllal (megfelelő számú oszlop, adattípus, hossz, NULL állapot stb.), vagy egy formátumfájl használatával kell megfeleltetnie az egyes mezőket a megfelelő oszlopoknak.
Jegyzet
Ha a céltáblával nem egyező fájlból importál adatokat, az importálási művelet sikeres lehet, de a céltáblába beszúrt adatértékek valószínűleg helytelenek. Ennek az az oka, hogy a rendszer a fájlból származó adatokat a céltábla formátumával értelmezi. Ezért az eltérések helytelen értékek beszúrását eredményezik. Az ilyen eltérés azonban semmilyen körülmények között sem okozhat logikai vagy fizikai inkonzisztenciákat az adatbázisban.
A formátumfájlok használatáról további információt az adatok importálására vagy exportálására szolgáló fájlok formázása (SQL Server) című témakörben talál.
A sikeres importálás nem fogja meghibásítani a céltáblát.
Hogyan kezeli a bcp natív formátumban az adatokat?
Ez a szakasz a bcp segédprogram natív formátumban történő exportálásának és importálásának speciális szempontjait ismerteti.
Nem karakteres adat
A bcp segédprogram az SQL Server belső bináris adatformátumát használja, hogy nemcharacter adatokat írjon egy táblából egy adatfájlba.
karakteres vagy varchar adatok
Minden char vagy varchar mező elején bcp hozzáadja az előtaghosszt.
Fontos
Natív mód használata esetén alapértelmezés szerint a bcp segédprogram konvertálja a karaktereket az SQL Serverről OEM-karakterekké, mielőtt azokat egy adatfájlba másolja. A bcp segédprogram átalakítja a karaktereket egy adatfájlból ANSI-karakterekké, mielőtt tömegesen importálja őket egy SQL Server-táblába. Ezen átalakítások során a kiterjesztett karakteradatok elveszhetnek. Bővített karakterek esetén használjon Unicode natív formátumot, vagy adjon meg egy kódlapot.
sql_variant adatok
Ha sql_variant adatokat SQLVARIANT-ként tárol egy natív formátumú adatfájlban, az adatok megőrzik annak minden jellemzőjét. Az egyes adatértékek adattípusát tároló metaadatok az adatértékkel együtt lesznek tárolva. Ez a metaadat arra szolgál, hogy újraalkossák az adatértéket ugyanazzal az adattípussal egy cél sql_variant oszlopban.
Ha a céloszlop adattípusa nem sql_variant, minden adatérték a céloszlop adattípusává lesz konvertálva az implicit adatkonvertálás szokásos szabályainak megfelelően. Ha hiba történik az adatkonvertálás során, a rendszer visszaállítja az aktuális köteget. A sql_variant oszlopok között átvitt karakter és varchar értékeknél kódlapkonvertálási problémák merülhetnek fel.
Az adatkonvertálásról további információt Adattípus-átalakítás (adatbázismotor)című témakörben talál.
Parancsbeállítások natív formátumhoz
Natív formátumú adatokat importálhat egy táblába a bcp, a TÖMEGES BESZÚRÁS vagy az INSERT ... SELECT * FROM OPENROWSET(BULK...)parancsok segítségével. A bcp parancs vagy a TÖMEGES BESZÚRÁS utasítás esetében megadhatja az adatformátumot az utasításban. BESZÚRÁS ... SELECT * FROM OPENROWSET(BULK...) utasításhoz meg kell adnia, hogy az adatformátum egy formátumfájlban legyen meghatározva.
A natív formátumot a következő parancsbeállítások támogatják:
Parancs | Opció | Leírás |
---|---|---|
bcp |
-n |
A bcp segédprogram az adatok natív adattípusait használja.* |
BULK INSERT |
DATAFILETYPE ='native' |
Az adatok natív vagy széles natív adattípusait használja.
DATAFILETYPE nincs szükség arra az esetre, ha egy formátumfájl megadja az adattípusokat. |
OPENROWSET |
Nincs adat. | Formátumfájlt kell használnia |
* Ha natív (-n
) adatokat szeretne betölteni az SQL Server-ügyfelek korábbi verzióival kompatibilis formátumba, használja a kapcsolót -V
. További információ: Natív és karakterformátumú adatok importálása az SQL Server korábbi verzióiból.
Jegyzet
Másik lehetőségként megadható a formázás mezőnkénti alapon egy formátumfájlban. További információ: Fájlok formázása adatok importálásához vagy exportálásához (SQL Server).
Példa tesztelési feltételekre
A példák a cikkben létrehozott adatbázist és fájlformátumot használják.
Mintatábla
Az alábbi szkript létrehoz egy tesztadatbázist, egy myNative
nevű táblát, és feltölti a táblát néhány kezdeti értékkel. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myNative (
PersonID smallint NOT NULL,
FirstName varchar(25) NOT NULL,
LastName varchar(30) NOT NULL,
BirthDate date,
AnnualSalary money
);
-- Populate table
INSERT TestDatabase.dbo.myNative
VALUES
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);
-- Review Data
SELECT * FROM TestDatabase.dbo.myNative;
Minta nem XML formátumú fájl
Az SQL Server kétféle formátumfájlt támogat: nem XML- és XML-formátumot. A nem XML formátum az SQL Server korábbi verziói által támogatott eredeti formátum. Részletes információkért tekintse át a 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, myNative.fmt
a myNative
sémája alapján. Ha bcp parancsot szeretne használni egy formátumfájl létrehozásához, adja meg a format
argumentumot, és adatfájl elérési útja helyett használja a nul
. A formátumbeállításhoz szükség van a -f
beállításra is. Ezen kívül ebben a példában a minősítő c
karakteradatok 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ő parancsokat:
bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T
REM Review file
Notepad D:\BCP\myNative.fmt
Fontos
Győződjön meg arról, hogy a nem XML formátumú fájl egy kocsivissza\sor hírcsatornával végződik. Ellenkező esetben valószínűleg a következő hibaüzenet jelenik meg:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Példák
A példák a cikkben létrehozott adatbázist és fájlformátumot használják.
Adatok exportálása bcp és natív formátum használatával
A -n
kapcsoló és OUT
parancs.
Az ebben a példában létrehozott adatfájlt a rendszer a következő példákban fogja használni.
A parancssorban adja meg a következő parancsokat:
bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n
REM Review results
NOTEPAD D:\BCP\myNative.bcp
Adatok importálása formátumfájl nélkül bcp és natív formátum használatával
A -n
kapcsoló és IN
parancs.
A parancssorban adja meg a következő parancsokat:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"
REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"
Adatok importálása nem XML formátumú fájllal bcp és natív formátum használatával
A -n
és -f
kapcsolók és IN
parancs.
A parancssorban adja meg a következő parancsokat:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"
REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -f D:\BCP\myNative.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"
BULK INSERT és natív formátum használata formátumfájl nélkül
Az DATAFILETYPE
argumentum.
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
FROM 'D:\BCP\myNative.bcp'
WITH (
DATAFILETYPE = 'native'
);
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
A BULK INSERT ÉS NATÍV FORMÁTUM HASZNÁLATA NEM XML FORMÁTUMÚ FÁJL ESETÉN
Az FORMATFILE
argumentum.
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
FROM 'D:\BCP\myNative.bcp'
WITH (
FORMATFILE = 'D:\BCP\myNative.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
OPENROWSET és natív formátum használata nem XML formátumú fájllal
Az FORMATFILE
argumentum.
Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
INSERT INTO TestDatabase.dbo.myNative
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myNative.bcp',
FORMATFILE = 'D:\BCP\myNative.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
Kapcsolódó tevékenységek
Adatformátumok használata tömeges importáláshoz vagy tömeges exportáláshoz:
Natív és karakterformátumú adatok importálása az SQL Server korábbi verzióiból
Karakterformátum használata adatok importálásához vagy exportálásához (SQL Server)
Adatok importálása vagy exportálása Unicode karakterformátummal (SQL Server)
Unicode natív formátum használata adatok importálásához vagy exportálásához (SQL Server)