Sdílet prostřednictvím


Použití nativního formátu Unicode k importu nebo exportu dat (SQL Server)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Nativní formát Unicode je užitečný v případech, kdy je nutné zkopírovat informace z jedné instalace microsoft SQL Serveru do jiné. Použití nativního formátu pro neznaková data šetří čas, eliminuje zbytečné převody datových typů z a na formát znakový. Použití formátu znaků Unicode pro všechna data znaků zabraňuje ztrátě všech rozšířených znaků během hromadného přenosu dat mezi servery pomocí různých znakových stránek. Datový soubor v nativním formátu Unicode lze číst libovolnou metodou hromadného importu.

Nativní formát 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. Pro neznaková data používá nativní formát Unicode nativní (databázové) datové typy. Pro znaková data, například znak, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max)a ntext, nativní formát Unicode používá znakovou sadu Unicode.

sql_variant data uložená jako SQLVARIANT v datovém souboru nativního formátu Unicode fungují stejným způsobem jako v datovém souboru nativního formátu, s tím rozdílem, že char a varchar hodnoty se převedou na nchar a nvarchar, což zdvojnásobí velikost úložiště požadovaného pro ovlivněné sloupce. Původní metadata se zachovají a hodnoty se při hromadném importu do sloupce tabulky převedou zpět na původní char a varchar datový typ.

V tomto tématu:
Možnosti příkazů pro nativní formát Unicode
ukázkové testovací podmínky
 ● ukázková tabulka
 ● ukázkový soubor formátu mimo XML
Příklady
 ● Použití nativního formátu bcp a Unicode k exportu dat
 ● Použití nativního formátu bcp a Unicode k importu dat bez formátu souboru
 ● Použití bcp a nativního formátu Unicode k importu dat s nesouborovým XML formátem
 ● použití nativního formátu BULK INSERT a Unicode bez formátu souboru
 ● Použití BULK INSERT a Unicode nativního formátu s nesouborovým XML formátem
 ● Použití OPENROWSET a nativního formátu Unicode s neXML formátovým souborem
související úkoly

Možnosti příkazů pro nativní formát Unicode

Data nativního formátu Unicode můžete importovat do tabulky pomocí bcp, BULK INSERT nebo INSERT ... SELECT * FROM OPENROWSET(BULK...). Pro příkaz bcp nebo PŘÍKAZ BULK INSERT můžete zadat formát dat v příkazu. Pro INSERT ... SELECT * FROM OPENROWSET(BULK...) příkaz, je nutné zadat formát dat ve formátu souboru.

Nativní formát Unicode je podporován následujícími možnostmi příkazů:

Příkaz Možnost Popis
bcp -N Způsobí, že nástroj bcp použije nativní formát Unicode, který používá nativní datové typy (databáze) pro všechna neznaková data a formát dat znaků Unicode pro všechny znaky (char, nchar, varchar, nvarchar, texta ntext).
HROMADNÉ VLOŽENÍ DATAFILETYPE ='rozšiřující' Používá nativní formát Unicode při hromadném importu dat.
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 naleznete v tématu Formát souborů pro import nebo export dat (SQL Server).

Příklad testovacích podmínek

Příklady v tomto tématu jsou založené na tabulce a formátovacím souboru definovaném níže.

ukázková tabulka

Následující skript vytvoří testovací databázi, tabulku s názvem myWidenative 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.myWidenative ( 
	PersonID smallint NOT NULL,
	FirstName nvarchar(25) NOT NULL,
	LastName nvarchar(30) NOT NULL,
	BirthDate date,
	AnnualSalary money
);

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

ukázkový soubor formátu mimo XML

SQL Server podporuje dva typy formátového souboru: ne-XML formát a XML formát. Formát jiného formátu než XML je původní formát podporovaný staršími verzemi SQL Serveru. Podrobné informace najdete v souborech v ne-XML formátu (SQL Server). Následující příkaz použije nástroj bcp k vygenerování souboru jiného formátu než XML, myWidenative.fmt, na základě schématu myWidenative. Pokud chcete k vytvoření formátu souboru použít příkaz bcp, zadejte argument formátu a místo cesty k datovému souboru použijte nulu. Možnost formátu také vyžaduje možnost -f. V tomto příkladu se kvalifikátor c používá k určení znakových dat a T slouží k určení důvěryhodného připojení pomocí integrovaného zabezpečení. Na příkazovém řádku zadejte následující příkazy:

bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

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

Důležitý

Ujistěte se, že soubor bez formátu XML končí znakem return\line. V opačném případě se pravděpodobně zobrazí 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 soubory formátu vytvořené výše uvedené.

Použití bcp a nativního formátu Unicode k exportu dat

přepínač -N a příkaz OUT. Poznámka: Datový soubor vytvořený v tomto příkladu se použije ve všech dalších příkladech. Na příkazovém řádku zadejte následující příkazy:

bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

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

Použití nativního formátu BCP a Unicode k importu dat bez formátového souboru

přepínač -N a příkaz IN. Na příkazovém řádku zadejte následující příkazy:

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

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

Použití bcp a nativního formátu Unicode k importu dat s neXML formátovým souborem

-N a -f přepínače a příkaz IN. Na příkazovém řádku zadejte následující příkazy:

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

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

REM Review results is SSMS

Použití BULK INSERT a nativního formátu Unicode bez formátového souboru

argument DATAFILETYPE. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
	FROM 'D:\BCP\myWidenative.bcp'
	WITH (
		DATAFILETYPE = 'widenative'
		);

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

Použití příkazu BULK INSERT a nativního formátu Unicode s ne-XML formátovým souborem

argumentu FORMATFILE. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
   FROM 'D:\BCP\myWidenative.bcp'
   WITH (
		FORMATFILE = 'D:\BCP\myWidenative.fmt'
		);

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

Použití OPENROWSET a nativního formátu Unicode s ne-XML formátovým souborem

FORMATFILE argumentu. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:

TRUNCATE TABLE TestDatabase.dbo.myWidenative;  -- for testing
INSERT INTO TestDatabase.dbo.myWidenative
	SELECT *
	FROM OPENROWSET (
		BULK 'D:\BCP\myWidenative.bcp', 
		FORMATFILE = 'D:\BCP\myWidenative.fmt'  
		) AS t1;

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

Použití datových formátů pro hromadný import nebo hromadný export

Viz také

bcp nástroj
Hromadné vložení (Transact-SQL)
OPENROWSET (Transact-SQL)
Datové typy (Transact-SQL)