Använda unicode-inbyggt format för att importera eller exportera data (SQL Server)
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Unicode-inbyggt format är användbart när information måste kopieras från en Microsoft SQL Server-installation till en annan. Användningen av internt format för icke-teckendata sparar tid, vilket eliminerar onödig konvertering av datatyper till och från teckenformat. Användningen av Unicode-teckenformat för alla teckendata förhindrar förlust av utökade tecken vid massöverföring av data mellan servrar med olika kodsidor. En datafil i unicode-format kan läsas med valfri massimportmetod.
Unicode-inbyggt format rekommenderas för massöverföring av data mellan flera instanser av SQL Server med hjälp av en datafil som innehåller utökade tecken eller DBCS-tecken. För icke-teckendata använder unicode-inbyggt format inbyggda datatyper (databas). För teckendata, till exempel tecken, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max)och ntextanvänder Unicodes inhemska teckendataformat.
De sql_variant data som lagras som en SQLVARIANT i en unicode-datafil i inbyggt format fungerar på samma sätt som i en datafil i internt format, förutom att tecken och varchar värden konverteras till nchar och nvarchar, vilket fördubblar mängden lagringsutrymme som krävs för de berörda kolumnerna. De ursprungliga metadata bevaras och värdena konverteras tillbaka till deras ursprungliga tecken och varchar datatyp när de massimporteras till en tabellkolumn.
Kommandoalternativ för unicode-inbyggt format
Du kan importera unicode-inbyggda formatdata till en tabell med hjälp av bcp, BULK INSERT eller INSERT ... VÄLJ * FRÅN OPENROWSET(BULK...). För ett bcp-kommando eller BULK INSERT--instruktion kan du ange dataformatet i -instruktionen. För en INSERT ... VÄLJ * FRÅN OPENROWSET(BULK...)-instruktion måste du ange dataformatet i en formatfil.
Unicode-inbyggt format stöds av följande kommandoalternativ:
Befallning | Alternativ | Beskrivning |
---|---|---|
bcp | -N | Gör att verktyget bcp använder Unicode-nativt format, som använder inbyggda datatyper för alla icke-teckendata och Unicode-teckendataformat för all teckendata (char, nchar, varchar, nvarchar, textoch ntext). |
BULKIMPORT | DATAFILETYPE ='widenative' | Använder unicode-inbyggt format vid massimport av data. |
OPENROWSET | Ej tillämpligt | Måste använda en formatfil |
Not
Du kan också ange formatering per fält i en formatfil. Mer information finns i Formatera filer för att importera eller exportera data (SQL Server).
Exempel på testvillkor
Exemplen i det här avsnittet baseras på tabellen och formatfilen som definieras nedan.
exempeltabell
Skriptet nedan skapar en testdatabas, en tabell med namnet myWidenative
och fyller i tabellen med några inledande värden. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (SSMS):
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;
exempelfil som inte är XML-format
SQL Server stöder två typer av formatfiler: icke-XML-format och XML-format. Icke-XML-format är det ursprungliga format som stöds av tidigare versioner av SQL Server. Vänligen granska Icke-XML-formatfiler (SQL Server) för mer detaljerad information. Följande kommando använder verktyget bcp för att generera en fil som inte är xml-format, myWidenative.fmt
, baserat på schemat för myWidenative
. Om du vill använda kommandot bcp för att skapa en formatfil anger du argumentet format och använder nul i stället för en datafilsökväg. Formatalternativet kräver också alternativet -f. I det här exemplet används dessutom c för att ange teckendata, och T- används för att ange en betrodd anslutning med integrerad säkerhet. I en kommandotolk anger du följande kommandon:
bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N
REM Review file
Notepad D:\BCP\myWidenative.fmt
Viktig
Se till att icke-XML-filen slutar med en vagnretur\radmatning. Annars får du troligen följande felmeddelande:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Exempel
Exemplen nedan använder databasen och formaterar filer som skapats ovan.
Använda bcp- och Unicode-inbyggt format för att exportera data
-N switch och kommandot OUT. Obs! Datafilen som skapas i det här exemplet används i alla efterföljande exempel. I en kommandotolk anger du följande kommandon:
bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N
REM Review results
NOTEPAD D:\BCP\myWidenative.bcp
Använda bcp- och Unicode-inbyggt format för att importera data utan
-N switch och kommandot IN. I en kommandotolk anger du följande kommandon:
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
Använda bcp- och Unicode-inbyggt format för att importera data med en fil som inte är XML-format
-N och -f växlar och kommandot IN. I en kommandotolk anger du följande kommandon:
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
Använda BULK INSERT och Unicode-native format utan formatfil
DATAFILETYPE ARGUMENTET. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (SSMS):
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;
Använda MASSINFOGNING och Unicode-inbyggt format med en fil som inte är XML-format
FORMATFILE argument. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (SSMS):
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;
Använda OPENROWSET och Unicode Native Format med en icke-XML-formatfil
FORMATFILE argument. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (SSMS):
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;
Relaterade uppgifter
Så här använder du dataformat för massimport eller massexport
Importera ursprungliga data och teckenformatsdata från tidigare versioner av SQL Server
Använda teckenformat för att importera eller exportera data (SQL Server)
använda internt format för att importera eller exportera data (SQL Server)
använda Unicode-teckenformat för att importera eller exportera data (SQL Server)
Se även
bcp Utility
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
datatyper (Transact-SQL)