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)
Unicode karakterformátum használata az SQL Server több példánya közötti tömeges adattovábbításhoz ajánlott kiterjesztett/DBCS-karaktereket tartalmazó adatfájl használatával. A Unicode karakter adatformátum lehetővé teszi az adatok kiszolgálóról való exportálását egy olyan kódlap használatával, amely eltér a műveletet végrehajtó ügyfél által használt kódlaptól. Ilyen esetekben a Unicode karakterformátum használata a következő előnyökkel jár:
Ha a forrás- és céladatok Unicode-adattípusok, a Unicode karakterformátum használata megőrzi az összes karakteradatot.
Ha a forrás- és céladatok nem Unicode-adattípusok, a Unicode karakterformátum használata minimálisra csökkenti a forrásadatokban a kiterjesztett karakterek elvesztését, amelyek nem jeleníthetők meg a célhelyen.
A Unicode-karakterformátum használatának szempontjai
Unicode-karakterformátum használata esetén fontolja meg a következő szempontokat:
Alapértelmezés szerint a bcp segédprogram elválasztja a karakter-adat mezőket a tabulátor karakterrel, és az új vonal 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.
A Unicode karakterformátumú adatfájlban tárolt sql_variant adatok ugyanúgy működnek, mint egy karakterformátumú adatfájlban, azzal a kivételével, hogy az adatok nchar tárolódnak karakteres adatok helyett. További információ a karakterformázási beállításokról: lásd Rendezés és Unicode-támogatás.
A Unicode-karakterformátum, a bcp és a formátumfájl használatának speciális szempontjai
A Unicode-karakterformátumú adatfájlok a Unicode-fájlok konvencióit követik. A fájl első két bájtja hexadecimális szám, 0xFFFE. Ezek a bájtok bájtsorrendjelként (BOM) szolgálnak, amely meghatározza, hogy a magas szintű bájtot a fájlban tárolja-e először vagy utoljára. Előfordulhat, hogy a bcp segédprogram félreértelmezi az anyagjegyzéket, és az importálási folyamat egy része meghiúsul; az alábbiakhoz hasonló hibaüzenet jelenhet meg:
Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid character value for cast specification
Az anyagjegyzék a következő feltételekkel tévesen értelmezhető:
A rendszer a bcp segédprogramot használja, a kapcsoló pedig
-wUnicode-karakter jelzésére szolgálFormátumfájlt használunk
Az adatfájl első mezője nem karakter
Gondolja át, hogy az alábbi áthidaló megoldások bármelyike elérhető-e az Adott helyzethez:
Ne használjon formátumfájlt. Erre a megkerülő megoldásra példa a "BCP és Unicode karakterformátum használata az Adatok importálása formátumfájl nélkül" című cikkben található.
Használja a
-ckapcsolót ahelyett, hogy-wAz adatok újraexportálása natív formátumban,
Használja a BULK INSERT (Transact-SQL) vagy az OPENROWSET (Transact-SQL) parancsot. Ezekre a megoldásokra példákat találhatunk a Tömeges BESZÚRÁS és Unicode karakterformátumú, nem XML formátumú fájlok használata, valamint az OPENROWSET és Unicode karakterformátumú, nem XML formátumú fájlok használata szakaszokban.
Szúrja be manuálisan az első rekordot a céltáblába, majd a kapcsolóval
-F 2indítsa el az importálást a második rekordon,Szúrja be manuálisan az első rekordot az adatfájlba, majd a kapcsolóval
-F 2indítsa el az importálást a második rekordon. Erre a megkerülő megoldásra példa található a BCP és Unicode karakterformátum használatáról az adatok importálásához nem XML formátumú fájlok szekciójában.Olyan előkészítési táblázatot használjon, amelyben az első oszlop egy karakter adattípusa, vagy
Exportálja újra az adatokat, és módosítsa az adatmező sorrendjét úgy, hogy az első adatmező karakter legyen. Ezután formázó fájl használatával újraképzheti az adatmezőt a tábla tényleges sorrendjére. Példa: Táblaoszlopok adatfájlmezőkre (SQL Server) való leképezése formátumfájl használatával.
Unicode-karakterformátum parancsbeállításai
Unicode karakterformátumú adatokat importálhat egy táblába a bcp, a BULK INSERT vagy az OPENROWSET használatával. Bcp-parancs vagy BULK INSERT utasítás esetén megadhatja az adatformátumot az utasításban. OPENROWSET utasítás esetén meg kell adnia az adatformátumot egy formátumfájlban.
A Unicode karakterformátumot a következő parancsbeállítások támogatják:
| Parancs | Opció | Leírás |
|---|---|---|
bcp |
-w |
Unicode karakterformátumot használ. |
BULK INSERT |
DATAFILETYPE ='widechar' |
Unicode karakterformátumot használ az adatok tömeges importálásakor. |
OPENROWSET |
Nincs adat. | Formátumfájlt kell használnia |
Jegyzet
Másik lehetőségként megadható a formázás mezőnkénti alapon egy formátumfájlban. További információkért tekintse meg az adatok importálásához vagy exportálásához használt fájlok formázását (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 myWidechar 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.myWidechar
(
PersonID SMALLINT NOT NULL,
FirstName NVARCHAR (25) NOT NULL,
LastName NVARCHAR (30) NOT NULL,
BirthDate DATE,
AnnualSalary MONEY
);
-- Populate table
INSERT TestDatabase.dbo.myWidechar
VALUES (1, N'ϴAnthony', N'Grosse', '02-23-1980', 65000.00),
(2, N'❤Alica', N'Fatnowna', '11-14-1963', 45000.00),
(3, N'☎Stella', N'Rossenhain', '03-02-1992', 120000.00);
-- Review data
SELECT * FROM TestDatabase.dbo.myWidechar;
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, myWidechar.fmta myWidecharsé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.myWidechar format nul -f D:\BCP\myWidechar.fmt -T -w
REM Review file
Notepad D:\BCP\myWidechar.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 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 az adatbázist használják, és formázza a korábban létrehozott fájlokat.
Adatok exportálása bcp- és Unicode-karakterformátummal
-w 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ő parancsokat:
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w
REM Review results
NOTEPAD D:\BCP\myWidechar.bcp
Adatok importálása formátumfájl nélkül bcp- és Unicode-karakterformátummal
-w kapcsoló és IN parancs. A parancssorban adja meg a következő parancsokat:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidechar;"
REM Import data
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -T -w
REM Review results is SSMS
Adatok importálása nem XML formátumú fájllal bcp és Unicode karakterformátummal
-w és -f kapcsolók és IN parancs. Áthidaló megoldást kell használni, mivel ebben a példában szerepel a bcp, a formátumfájl, a Unicode karakter, és az adatfájl első adatmezője nem karakter. A Unicode-karakterformátum, a bcp és a formátumfájl használatának speciális szempontjai a cikk korábbi részében olvashatók. Az adatfájlt myWidechar.bcp úgy módosítja a rendszer, hogy hozzáad egy további rekordot "dummy" rekordként, amelyet aztán kihagy a -F 2 kapcsolóval.
A parancssorban adja meg a következő parancsokat, és kövesse a módosítási lépéseket:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidechar;"
REM Open data file
Notepad D:\BCP\myWidechar.bcp
REM Copy first record and then paste as new first record. This additional record is the "dummy" record.
REM Close file.
REM Import data instructing bcp to skip dummy record with the -F 2 switch.
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -f D:\BCP\myWidechar.fmt -T -F 2
REM Review results is SSMS
REM Return data file to original state for usage in other examples
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w
Tömeges beszúrás és Unicode karakterformátum használata formátumfájl nélkül
DATAFILETYPE érv. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar FROM 'D:\BCP\myWidechar.bcp'
WITH (DATAFILETYPE = 'widechar');
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
Használja a TÖMEGES BESZÚRÁST és Unicode karakterformátumot nem XML formátumú fájllal
FORMATFILE érv. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar FROM 'D:\BCP\myWidechar.bcp'
WITH (FORMATFILE = 'D:\BCP\myWidechar.fmt');
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
OPENROWSET és Unicode karakterformátum használata nem XML formátumú fájllal
FORMATFILE érv. Hajtsa végre a következő Transact-SQL a Microsoft SQL Server Management Studióban (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
INSERT INTO TestDatabase.dbo.myWidechar
SELECT * FROM OPENROWSET (
BULK 'D:\BCP\myWidechar.bcp',
FORMATFILE = 'D:\BCP\myWidechar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
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)
- Natív formátum használata adatok importálásához vagy exportálásához (SQL Server)
- Unicode natív formátum használata adatok importálásához vagy exportálásához (SQL Server)