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


Adatok importálása vagy exportálása karakterformátummal (SQL Server)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Kezelt PéldányAzure Synapse AnalyticsAnalytics Platform rendszer (PDW)Microsoft Fabric Raktár

A karakterformátum akkor ajánlott, ha adatokat tömegesen exportál egy másik programban használni kívánt szövegfájlba, vagy ha egy másik program által létrehozott szövegfájlból tömegesen importál adatokat.

A karakterformátum az összes oszlop karakteradat-formátumát használja. Az adatok karakterformátumban való tárolása akkor hasznos, ha az adatokat egy másik programmal, például egy számolótáblával használják, vagy ha az adatokat át kell másolni egy SQL Server-példányba egy másik adatbázis-gyártótól, például az Oracle-től.

Jegyzet

Ha tömegesen továbbít adatokat az SQL Server példányai között, és az adatfájl Unicode karakteradatokat tartalmaz, de nem tartalmaz kiterjesztett vagy DBCS karaktereket, használja a Unicode karakterformátumot. További információ: Adatok importálása vagy exportálása Unicode karakterformátummal (SQL Server).

A karakterformátum használatának szempontjai

A karakterformátum használatakor vegye figyelembe a következő szempontokat:

  • Alapértelmezés szerint a bcp segédprogram elválasztja a karakteradat mezőket a tabulátor karakterrel, és újsor karakterrel lezárja a rekordokat. Az alternatív terminátorok megadásáról további információt a mező- és sor-terminátorok (SQL Server) megadása című témakörben talál.

  • Alapértelmezés szerint a karaktermódú adatok tömeges exportálása vagy importálása előtt a következő átalakítások lesznek végrehajtva:

    A tömeges művelet iránya Konverzió
    Kivitel Az adatokat karakterábrázolássá alakítja. Ha kifejezetten kérik, az adatok a karakteroszlopok kért kódlapjára lesznek konvertálva. Ha nincs megadva kódlap, a karakteradatok az ügyfélszámítógép OEM-kódlapjának használatával lesznek konvertálva.
    Importál Szükség esetén natív ábrázolásúvá alakítja a karakteradatokat, és lefordítja a karakteradatokat az ügyfél kódlapjáról egy vagy több céloszlop kódlapjára.
  • Ha meg szeretné akadályozni a kiterjesztett karakterek elvesztését az átalakítás során, használjon Unicode karakterformátumot, vagy adjon meg egy kódlapot.

  • A karakterformátumú fájlban tárolt sql_variant adatok metaadatok nélkül vannak tárolva. Minden adatérték karakteres formátumra lesz konvertálva az implicit adatkonvertálás szabályainak megfelelően. Amikor egy sql_variant oszlopba importálja az adatokat, az adatok karakterkéntlesznek importálva. Ha nem sql_variantadattípusú oszlopba importálja, az adatok implicit átalakítással konvertálódnak karakterből. Az adatkonvertálásról további információt Adattípus-átalakítás (adatbázismotor)című témakörben talál.

  • A bcp segédprogram a pénzösszegeket értékekként exportálja karakterformátumú adatfájlok formájában, amelyek a tizedesvessző után négy számjegyet tartalmaznak, és nem tartalmaznak számcsoport-elválasztó szimbólumokat, például a vesszőket. Például a értéket tartalmazó 1,234,567.123456 oszlop tömegesen exportálódik egy adatfájlba 1234567.1235karaktersztringként.

A karakterformátum parancsbeállításai

A karakterformázási adatokat bcp, BULK INSERT (Transact-SQL), vagy OPENROWSET (BULK) használatával importálhatja egy táblába. Egy bcp parancs vagy BULK INSERT (Transact-SQL) utasítás esetében megadhatja az adatformátumot az utasításban. OPENROWSET (BULK) utasítás esetén meg kell adnia az adatformátumot egy formátumfájlban.

A karakterformátumot a következő parancsbeállítások támogatják:

Parancs Opció Leírás
bcp -c A bcp segédprogram karakteradatokat használ. 1
BULK INSERT DATAFILETYPE ='char' Az adatok tömeges importálásakor használjon karakterformátumot.
OPENROWSET Nincs adat. Formátumfájlt kell használnia

1 A karakteradatok (-c) az SQL Server-ügyfelek korábbi verzióival kompatibilis formátumba való betöltéséhez 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 cikkben szereplő példák a következő táblázaton és formátumfájlon alapulnak.

Mintatábla

A következő szkript létrehoz egy tesztadatbázist, egy myChar 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.myChar
(
    PersonID SMALLINT NOT NULL,
    FirstName VARCHAR (25) NOT NULL,
    LastName VARCHAR (30) NOT NULL,
    BirthDate DATE,
    AnnualSalary MONEY
);

-- Populate table
INSERT TestDatabase.dbo.myChar
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.myChar;

Nem XML formátumú minta 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. További információ: Nem XML formátumú fájlok használata (SQL Server). Az alábbi parancs a bcp segédprogram használatával hoz létre egy nem XML formátumú fájlt, myChar.fmta myCharsé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ő parancsot:

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c

REM Review file
Notepad D:\BCP\myChar.fmt

Fontos

Győződjön meg arról, hogy a nem XML formátumú fájl kocsivissza és sorvég jellel végződik. Ellenkező esetben a következő hibaüzenet jelenhet meg:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

Példák

Az alábbi példák a cikkben korábban létrehozott adatbázist és fájlformátumot használják.

Adatok exportálása bcp- és karakterformátummal

-c kapcsoló és OUT parancs.

Az ebben a példában létrehozott adatfájl minden további példában használatos.

A parancssorban adja meg a következő parancsot:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

REM Review results
NOTEPAD D:\BCP\myChar.bcp

Adatok importálása formátumfájl nélkül a bcp és a karakterformátum használatával

A -c kapcsoló és IN parancs. A parancssorban adja meg a következő parancsot:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Adatok importálása nem XML formátumú fájllal bcp- és karakterformátummal

A -c és -f kapcsolók és IN parancs. A parancssorban adja meg a következő parancsot:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

BULK INSERT és karakteres 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.myChar; -- for testing

BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
    WITH (DATAFILETYPE = 'Char');

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

BULK INSERT és karakterformátum használata nem XML-alapú formátumfájllal

Ez egy példa a FORMATFILE argumentumra. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing

BULK INSERT TestDatabase.dbo.myChar FROM 'D:\BCP\myChar.bcp'
    WITH (FORMATFILE = 'D:\BCP\myChar.fmt');

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

OPENROWSET és karakterformátum használata nem XML formátumú fájllal

Példa a FORMATFILE argumentumra. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing

INSERT INTO TestDatabase.dbo.myChar
SELECT * FROM OPENROWSET (
    BULK 'D:\BCP\myChar.bcp',
    FORMATFILE = 'D:\BCP\myChar.fmt'
) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Adatformátumok használata tömeges importáláshoz vagy tömeges exportáláshoz: