Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse in Microsoft Fabric
Das Zeichenformat wird für den Massenexport von Daten in eine Textdatei empfohlen, die in einem anderen Programm verwendet werden sollen, oder für den Massenimport von Daten aus einer Textdatei, die von einem anderen Programm generiert werden.
Das Zeichenformat verwendet das Zeichendatenformat für alle Spalten. Es ist nützlich, Informationen im Zeichenformat zu speichern, wenn Sie die Daten mit einem anderen Programm, z. B. als Kalkulationstabelle, verwenden, oder die Daten aus einer Datenbank eines anderen Herstellers wie z. B. Oracle in eine Instanz von SQL Server kopiert werden müssen.
Hinweis
Wenn Sie Daten zwischen Instanzen von SQL Server und der Datendatei massenweise übertragen und diese Unicode-Zeichendaten, jedoch keine erweiterten oder DBCS-Zeichen enthalten, verwenden Sie das Unicode-Zeichenformat. Weitere Informationen finden Sie unter Verwenden des Unicode-Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server).
Überlegungen zur Verwendung des Zeichenformats
Berücksichtigen Sie bei der Verwendung des Zeichenformats Folgendes:
Das Hilfsprogramm „bcp“ trennt standardmäßig die Zeichendatenfelder mit dem Tabstoppzeichen und schließt die Datensätze mit einem Neue-Zeile-Zeichen ab. Informationen darüber, wie Sie alternative Endzeichen angeben, finden Sie unter Angeben von Feld- und Zeilenendzeichen (SQL Server).
Standardmäßig werden vor einem Massenexport oder -import von Daten im Zeichenmodus die folgenden Konvertierungen ausgeführt:
Richtung des Massenvorgangs Konvertierung Exportieren Konvertiert Daten in die Zeichendarstellung. Wenn dies explizit angefordert wird, werden die Daten in die angeforderte Codepage für Zeichenspalten konvertiert. Wenn keine Codepage angegeben wird, werden die Zeichendaten mithilfe der OEM-Codepage des Clientcomputers konvertiert. Importieren Konvertiert Zeichendaten bei Bedarf in systemeigene Darstellung und übersetzt die Zeichendaten von der Codeseite des Clients in die Codepage einer oder mehrerer Zielspalten. Um den Verlust von Sonderzeichen zu verhindern, verwenden Sie das Unicode-Zeichenformat, oder geben Sie eine Codepage an.
Alle sql_variant -Daten, die in einer Zeichenformatdatei gespeichert sind, werden ohne Metadaten gespeichert. Alle Datenwerte werden gemäß den Regeln der impliziten Datenkonvertierung in das char -Format konvertiert. Beim Importieren in eine sql_variant -Spalte werden die Daten als char-Datentyp importiert. Beim Importieren in eine Spalte mit einem anderen Datentyp als sql_variantwerden die Daten mithilfe der impliziten Konvertierung von char konvertiert. Weitere Informationen zur Datenkonvertierung finden Sie unter Datentypkonvertierung (Datenbankmodul).
Das Hilfsprogramm „bcp“ exportiert money -Werte in Datendateien im Zeichenformat mit vier Stellen nach dem Dezimaltrennzeichen und ohne Symbole für die Zifferngruppierung, wie z.B. Kommas. Beispielsweise wird eine Geldspalte, die den Wert
1,234,567.123456enthält, als Zeichenfolge1234567.1235in eine Datei exportiert.
Befehlsoptionen für das Zeichenformat
Sie können Zeichenformatdaten mithilfe von bcp, BULK INSERT (Transact-SQL) oder OPENROWSET (BULK) in eine Tabelle importieren. Für einen bcp-Befehl oder eine BULK INSERT (Transact-SQL) -Anweisung können Sie das Datenformat in der Anweisung angeben. Für eine OPENROWSET (BULK)- Anweisung müssen Sie das Datenformat in einer Formatdatei angeben.
Das Zeichenformat wird von den folgenden Befehlsoptionen unterstützt:
| Get-Help | Auswahlmöglichkeit | Beschreibung |
|---|---|---|
bcp |
-c |
Bewirkt, dass das bcp-Hilfsprogramm Zeichendaten verwendet. 1 |
BULK INSERT |
DATAFILETYPE ='char' |
Verwendet das Zeichenformat beim Massenimport von Daten. |
OPENROWSET |
N/V | Muss eine Formatdatei verwenden |
1 Verwenden Sie den -c Switch, um Zeichendaten (-V) in ein Format zu laden, das mit früheren Versionen von SQL Server-Clients kompatibel ist. Weitere Informationen finden Sie unter Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im Zeichenformat.
Hinweis
Alternativ können Sie die Formatierung pro Feld in einer Formatdatei angeben. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).
Beispieltestbedingungen
Die Beispiele in diesem Artikel basieren auf der folgenden Tabelle und Formatdatei.
Beispieltabelle
Das folgende Skript erstellt eine Testdatenbank, eine Tabelle mit dem Namen myChar und füllt die Tabelle mit einigen Anfangswerten auf. Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Beispieldatei im Nicht-XML-Format
SQL Server unterstützt zwei Typen von Formatdateien: Nicht-XML- und XML-Format. Das Nicht-XML-Format ist das ursprüngliche Format, das von früheren Versionen von SQL Server unterstützt wird. Weitere Informationen finden Sie unter Verwenden von Nicht-XML-Formatdateien (SQL Server). Der folgende Befehl verwendet das bcp-Hilfsprogramm, um eine Datei im Nicht-XML-Format myChar.fmt basierend auf dem Schema von myChar zu generieren. Wenn Sie einen bcp-Befehl zum Erstellen einer Formatdatei verwenden möchten, geben Sie das FORMAT Argument an, und verwenden Sie nul das Argument anstelle eines Datendateipfads. Die Formatoption erfordert auch die -f Option. Darüber hinaus wird für dieses Beispiel der Qualifizierer c zum Angeben von Zeichendaten verwendet und T verwendet, um eine vertrauenswürdige Verbindung mit integrierter Sicherheit anzugeben.
Geben Sie folgenden Befehl an der Eingabeaufforderung ein:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Wichtig
Stellen Sie sicher, dass Ihre Nicht-XML-Formatdatei mit einem Wagenrücklauf/Zeilenvorschub endet. Andernfalls wird möglicherweise die folgende Fehlermeldung angezeigt:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Beispiele
In den folgenden Beispielen werden die zuvor in diesem Artikel erstellten Datenbank- und Formatdateien verwendet.
Verwenden des bcp- und Zeichenformats zum Exportieren von Daten
-c schalter und OUT befehl.
Die in diesem Beispiel erstellte Datendatei wird in allen nachfolgenden Beispielen verwendet.
Geben Sie folgenden Befehl an der Eingabeaufforderung ein:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Verwenden des bcp- und Zeichenformats zum Importieren von Daten ohne Formatdatei
Der -c Schalter und IN Befehl. Geben Sie folgenden Befehl an der Eingabeaufforderung ein:
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;"
Verwenden Sie bcp und das Zeichenformat, um Daten mit einer Datei im Nicht-XML-Format zu importieren.
Die -c und -f Schalter und IN Befehl. Geben Sie folgenden Befehl an der Eingabeaufforderung ein:
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;"
Verwenden des BULK INSERT- und Zeichenformats ohne Formatdatei
Das DATAFILETYPE Argument. Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwenden des BULK INSERT- und Zeichenformats mit einer Nicht-XML-Formatdatei
Dies ist ein Beispiel für das FORMATFILE Argument. Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwendung des OPENROWSET und des Zeichenformats mit einer Nicht-XML-Formatdatei.
Ein Beispiel für das FORMATFILE Argument. Führen Sie die folgenden Transact-SQL-Anweisungen in Microsoft SQL Server Management Studio (SSMS) aus:
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;
Verwandte Aufgaben
So verwenden Sie Datenformate für den Massenimport oder Massenexport:
- Importieren von systemeigenen und Zeichenformatdaten aus früheren Versionen von SQL Server
- Verwenden des nativen Formats zum Importieren oder Exportieren von Daten (SQL Server)
- Verwenden des Unicode-Zeichenformats zum Importieren oder Exportieren von Daten (SQL Server)
- Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)