Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Formát znaků Unicode se doporučuje pro hromadný přenos dat mezi více instancemi SQL Serveru pomocí datového souboru, který obsahuje rozšířené znaky nebo znaky DBCS. Formát dat znaků Unicode umožňuje export dat ze serveru pomocí znakové stránky, která se liší od znakové stránky používané klientem provádějícím operaci. V takových případech má použití formátu znaků Unicode následující výhody:
Pokud jsou zdrojová a cílová data datovými typy Unicode, zachová použití formátu znaků Unicode všechna data znaků.
Pokud zdrojová a cílová data nejsou datovými typy Unicode, použití formátu znaků Unicode minimalizuje ztrátu rozšířených znaků ve zdrojových datech, která nelze reprezentovat v cíli.
Důležité informace o používání formátu znaků Unicode
Při použití formátu znaků Unicode zvažte následující:
Ve výchozím nastavení nástroj bcp odděluje pole s daty znaků znakem tabulátoru a ukončí záznamy znakem nového řádku. Informace o tom, jak zadat alternativní ukončovací znaky, naleznete v části Určení terminátorů pole a řádků (SQL Server).
Data sql_variant uložená v datovém souboru formátu unicode fungují stejným způsobem jako v datovém souboru ve formátu znaků, s tím rozdílem, že se data ukládají jako nchar místo char dat. Další informace o formátu znaků naleznete v tématu Podpora kolace a Unicode.
Zvláštní aspekty použití formátu znaků Unicode, bcp a formátového souboru
Datové soubory formátu znaků Unicode se řídí konvencemi souborů Unicode. První dva bajty souboru jsou šestnáctková čísla, 0xFFFE. Tyto bajty slouží jako značky pořadí bajtů (BOM), které určují, jestli je bajt s vysokým pořadím uložen jako první nebo poslední v souboru. Nástroj bcp může chybně interpretovat BOM a způsobit selhání části procesu importu; může se zobrazit chybová zpráva podobná následující:
Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid character value for cast specification
Kusovník může být nesprávně interpretován za následujících podmínek:
Použije se nástroj bcp a
-wpřepínač se použije k označení znaku Unicode.Používá se formátový soubor.
První pole v datovém souboru není znakové.
Zvažte, jestli pro vaši konkrétní situaci může být k dispozici některá z následujících alternativních řešení:
Nepoužívejte formátový soubor. Příkladem tohoto alternativního řešení je použití formátu bcp a Unicode pro import dat bez formátového souboru.
-cPoužijte přepínač místo-w,Opětovný export dat pomocí nativního formátu
Použijte BULK INSERT (Transact-SQL) nebo OPENROWSET (Transact-SQL). Příklady těchto řešení jsou uvedeny v sekcích Použití BULK INSERT a Unicode znakového formátu s ne-XML formátovým souborem a Použití OPENROWSET a Unicode znakového formátu s ne-XML formátovým souborem.
Ručně vložte první záznam do cílové tabulky a potom pomocí
-F 2přepínače spusťte import na druhém záznamu.Ručně vložte fiktivní první záznam do datového souboru a potom pomocí
-F 2přepínače spusťte import na druhém záznamu. Příkladem tohoto alternativního řešení je uveden v části Použití bcp a formátu znaků Unicode k importu dat se souborem jiného než XML formátu.Použijte stagingovou tabulku, kde je první sloupec typu znakových dat, nebo
Znovu vyexportujte data a změňte pořadí datových polí tak, aby první datové pole bylo znakem. Potom pomocí formátového souboru přemapujte datové pole na skutečné pořadí v tabulce. Příklad najdete v tématu Použití formátu souboru k mapování sloupců tabulky na pole datových souborů (SQL Server).
Možnosti příkazů pro formát znaků Unicode
Data formátu znaků Unicode můžete importovat do tabulky pomocí bcp, BULK INSERT nebo OPENROWSET. Pro příkaz bcp nebo příkaz BULK INSERT můžete v příkazu zadat formát dat. Pro příkaz OPENROWSET je nutné zadat formát dat v souboru formátu.
Formát znaků Unicode podporuje následující možnosti příkazů:
| Příkaz | Možnost | Popis |
|---|---|---|
bcp |
-w |
Používá formát znaků Unicode. |
BULK INSERT |
DATAFILETYPE ='widechar' |
Při hromadném importu dat používá formát znaků Unicode. |
OPENROWSET |
Není k dispozici | Musí používat formátový soubor. |
Poznámka
Alternativně můžete v souboru formátu zadat formátování pro jednotlivá pole. Další informace najdete v tématu Formátování souborů pro import nebo export dat (SQL Server).
Příklady testovacích podmínek
Příklady v tomto článku jsou založené na následující tabulce a formátu souboru.
Ukázková tabulka
Následující skript vytvoří testovací databázi, tabulku s názvem myWidechar a naplní tabulku některými počátečními hodnotami. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
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;
Ukázkový soubor formátu jiného formátu než XML
SQL Server podporuje dva typy formátového souboru: ne-XML formát a formát XML. Formát jiného formátu než XML je původní formát podporovaný staršími verzemi SQL Serveru. Další informace naleznete v tématu Použití souborů formátu mimo XML (SQL Server).
Následující příkaz používá nástroj bcp k vygenerování souboru jiného formátu než XML, myWidechar.fmt, na základě schématu myWidechar. Pokud chcete k vytvoření formátu souboru použít příkaz b cp, zadejte format argument a místo cesty k datovému souboru použijte nul. Možnost formátu také vyžaduje možnost -f. V tomto příkladu se kvalifikátor c používá k určení údajů o znacích a T slouží k určení důvěryhodného připojení s využitím integrovaného zabezpečení. Na příkazovém řádku zadejte následující příkazy:
bcp TestDatabase.dbo.myWidechar format nul -f D:\BCP\myWidechar.fmt -T -w
REM Review file
Notepad D:\BCP\myWidechar.fmt
Důležitý
Ujistěte se, že soubor bez formátu XML končí znakem return\line. V opačném případě se může zobrazit následující chybová zpráva:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Příklady
Následující příklady používají databázi a formátovat soubory vytvořené dříve.
Použití formátu znaků bcp a Unicode k exportu dat
-w přepínač a OUT příkaz. Datový soubor vytvořený v tomto příkladu se používá ve všech dalších příkladech. Na příkazovém řádku zadejte následující příkazy:
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w
REM Review results
NOTEPAD D:\BCP\myWidechar.bcp
Použití formátu znaků bcp a Unicode k importu dat bez formátu souboru
-w přepínač a IN příkaz. Na příkazovém řádku zadejte následující příkazy:
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
Použití formátu znaků bcp a Unicode k importu dat se souborem jiného formátu než XML
-w přepínač -f a IN příkaz. Alternativní řešení je potřeba použít, protože tento příklad zahrnuje bcp, formátový soubor, znak Unicode a první datové pole v datovém souboru není znakové. Viz zvláštní úvahy o použití formátu znaků Unicode, bcp a formátovacích souborů uvedené dříve v článku. Datový soubor myWidechar.bcp se změní přidáním dalšího záznamu jako "fiktivního" záznamu, který se pak přeskočí přepínačem -F 2 .
Na příkazovém řádku zadejte následující příkazy a postupujte podle kroků pro úpravy:
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
Použijte BULK INSERT a formát Unicode znaků bez použití formátového souboru
DATAFILETYPE argument. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
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;
Použijte BULK INSERT a formát znaků Unicode s formátovým souborem, který není ve formátu XML.
FORMATFILE argument. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
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;
Použijte OPENROWSET a znakový formát Unicode se souborem v ne-XML formátu.
FORMATFILE argument. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
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;
Související úkoly
Použití datových formátů pro hromadný import nebo hromadný export
- Import nativních dat a dat formátu znaků ze starších verzí SQL Serveru
- Použití formátu znaků k importu nebo exportu dat (SQL Server)
- Použití nativního formátu k importu nebo exportu dat (SQL Server)
- Použití nativního formátu Unicode k importu nebo exportu dat (SQL Server)
Související obsah
- nástroj bcp
- hromadné vložení (Transact-SQL)
- OPENROWSET (Transact-SQL)
- Datové typy (Transact-SQL)
- podpora kolace a kódování Unicode