Använda teckenformat 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)
Warehouse i Microsoft Fabric
Teckenformat rekommenderas när du massexportera data till en textfil som ska användas i ett annat program eller när du massimportera data från en textfil som genereras av ett annat program.
Teckenformatet använder teckendataformatet för alla kolumner. Att lagra information i teckenformat är användbart när data används med ett annat program, till exempel ett kalkylblad, eller när data måste kopieras till en instans av SQL Server från en annan databasleverantör, till exempel Oracle.
Anteckning
När du massöverföring av data mellan instanser av Microsoft SQL Server och datafilen innehåller Unicode-teckendata men inte några utökade tecken eller DBCS-tecken använder du Unicode-teckenformatet. Mer information finns i Använda unicode-teckenformat för att importera eller exportera data (SQL Server).
Överväganden för att använda teckenformat
När du använder teckenformat bör du tänka på:
Som standardinställning separerar bcp-verktyget teckendatafälten med tabbtecknet och avslutar posterna med nyradstecknet. Information om hur du anger alternativa avslut finns i Ange fält- och radavgränsare (SQL Server).
Innan massexporten eller importen av teckenlägesdata utförs som standard följande konverteringar:
Massåtgärdens riktning Omvandling Export Konverterar data till teckenrepresentation. Om det uttryckligen begärs konverteras data till den begärda kodsidan för teckenkolumner. Om ingen kodsida anges konverteras teckendata med hjälp av OEM-kodsidan på klientdatorn. Import Konverterar teckendata till intern representation vid behov och översätter teckendata från klientens kodsida till kodsidan för en eller flera målkolumner. Om du vill förhindra förlust av utökade tecken under konverteringen använder du antingen Unicode-teckenformat eller anger en kodsida.
Alla sql_variant data som lagras i en fil i teckenformat lagras utan metadata. Varje datavärde konverteras till tecken format, enligt reglerna för implicit datakonvertering. När de importeras till en sql_variant kolumn importeras data som char. När de importeras till en kolumn med en annan datatyp än sql_variantkonverteras data från tecken med implicit konvertering. Mer information om datakonvertering finns i Datatypkonvertering (databasmotor).
Verktyget bcp exporterar pengar värden som datafiler i teckenformat med fyra siffror efter decimaltecknet och utan några teckengrupperingssymboler som kommaavgränsare. Till exempel exporteras en pengar kolumn som innehåller värdet
1,234,567.123456
massexporteras till en datafil som teckensträngen1234567.1235
.
Kommandoalternativ för teckenformat
Du kan importera teckenformatdata till en tabell med hjälp av bcp, BULK INSERT (Transact-SQL)eller OPENROWSET (Transact-SQL). För ett bcp-kommando eller BULK INSERT (Transact-SQL)-instruktion kan du ange dataformatet i -instruktionen. För en OPENROWSET (Transact-SQL)-instruktionen måste du ange dataformatet i en formatfil.
Teckenformat stöds av följande kommandoalternativ:
Befallning | Alternativ | Beskrivning |
---|---|---|
bcp |
-c |
Gör att bcp-verktyget använder teckendata.* |
BULK INSERT |
DATAFILETYPE ='char' |
Använd teckenformat vid massimport av data. |
OPENROWSET |
Ej tillämpligt | Måste använda en formatfil |
* Om du vill läsa in teckendata (-c
) till ett format som är kompatibelt med tidigare versioner av SQL Server-klienter använder du växeln -V
. Mer information finns i Importera inbyggda data och teckenformatdata från tidigare versioner av SQL Server.
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 den här artikeln baseras på följande tabell- och formatfil.
Exempeltabell
Följande skript skapar en testdatabas, en tabell med namnet myChar
och fyller 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.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;
Exempelfil med icke-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. Mer information finns i SQL Server(Non-XML Format Files). Följande kommando använder bcp-verktyget för att generera en fil som inte är xml-format, myChar.fmt
, baserat på schemat för myChar
. 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 kommando:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Viktig
Se till att filen i annat format än XML slutar med vagnretur och 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
I följande exempel används databasen och formatfilerna som skapades tidigare i den här artikeln.
Använda bcp- och teckenformat för att exportera data
-c
omkopplare och OUT
kommando.
Datafilen som skapas i det här exemplet används i alla efterföljande exempel.
I en kommandotolk anger du följande kommando:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Använd bcp- och teckenformat för att importera data utan en formatfil
Strömbrytaren -c
och kommandot IN
. I en kommandotolk anger du följande kommando:
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;"
Använd bcp- och teckenformat för att importera data med en fil som inte är XML-format
-c
och -f
växlar och IN
kommando. I en kommandotolk anger du följande kommando:
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;"
Använd BULK INSERT- och teckenformat utan formatfil
Argumentet DATAFILETYPE
. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (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;
Använd BULK INSERT och teckenbaserat format med en fil som inte är XML-format
Det här är ett exempel på argumentet FORMATFILE
. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (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;
Använd OPENROWSET och teckenformat med en fil i ett icke-XML-format
Ett exempel på argumentet FORMATFILE
. Kör följande Transact-SQL i Microsoft SQL Server Management Studio (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;
Relaterade uppgifter
Så här använder du dataformat för massimport eller massexport:
importera inbyggda data och teckenformat från tidigare versioner av 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)
Använda unicode-inbyggt format för att importera eller exportera data (SQL Server)