Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Hurtownia w Microsoft Fabric
Format znaku jest zalecany podczas zbiorczego eksportowania danych do pliku tekstowego, który ma być używany w innym programie lub podczas zbiorczego importowania danych z pliku tekstowego generowanego przez inny program.
Format znaków używa formatu danych znaków dla wszystkich kolumn. Przechowywanie informacji w formacie znaków jest przydatne, gdy dane są używane z innym programem, takim jak arkusz kalkulacyjny, lub gdy dane muszą zostać skopiowane do wystąpienia programu SQL Server od innego dostawcy bazy danych, takiego jak Oracle.
Notatka
W przypadku zbiorczego transferu danych między wystąpieniami programu Microsoft SQL Server, gdy plik danych zawiera dane znaków Unicode, ale nie zawiera żadnych znaków rozszerzonych ani DBCS, należy użyć formatu znaków Unicode. Aby uzyskać więcej informacji, zobacz Używanie formatu znaków Unicode do importowania lub eksportowania danych (SQL Server).
Zagadnienia dotyczące używania formatu znaków
W przypadku korzystania z formatu znaków należy wziąć pod uwagę następujące kwestie:
Domyślnie narzędzie bcp oddziela pola danych znakowych znakiem tabulatora i kończy rekordy znakiem nowej linii. Aby uzyskać informacje na temat określania alternatywnych terminatorów, zobacz Określanie pól i terminatorów wierszy (SQL Server).
Domyślnie przed eksportem zbiorczym lub importowaniem danych trybu znaków są wykonywane następujące konwersje:
Kierunek operacji zbiorczej Konwersja Eksport Konwertuje dane na reprezentację znaków. W przypadku jawnego żądania dane są konwertowane na żądaną stronę kodów dla kolumn znaków. Jeśli nie określono strony kodowej, dane znaków są konwertowane przy użyciu strony kodowej producenta OEM komputera klienckiego. Importowanie Konwertuje dane znaków na natywną reprezentację, gdy jest to konieczne, i tłumaczy dane znaków ze strony kodowej klienta na stronę kodowej co najmniej jednej kolumny docelowej. Aby zapobiec utracie znaków rozszerzonych podczas konwersji, użyj formatu znaków Unicode lub określ stronę kodową.
Wszystkie sql_variant dane przechowywane w pliku w formacie znaków są przechowywane bez metadanych. Każda wartość danych jest konwertowana na format znaków zgodnie z regułami niejawnego przekształcania danych. Podczas importowania do kolumny sql_variant dane są importowane jako char. Podczas importowania do kolumny z typem danych innym niż sql_variantdane są konwertowane z char przy użyciu niejawnej konwersji. Aby uzyskać więcej informacji na temat konwersji danych, zobacz Konwersja typu danych (Aparat bazy danych).
Narzędzie bcp eksportuje pieniądze wartości jako pliki danych formatu znaków z czterema cyframi po przecinku i bez żadnych symboli grupowania cyfr, takich jak separatory przecinków. Na przykład kolumna pieniędzy zawierająca wartość
1,234,567.123456
jest eksportowana zbiorczo do pliku danych jako ciąg znakowy1234567.1235
.
Opcje poleceń dla formatu znaków
Możesz zaimportować dane formatu znaków do tabeli, używając bcp, BULK INSERT (Transact-SQL)lub OPENROWSET (Transact-SQL). W przypadku polecenia bcp lub BULK INSERT (Transact-SQL) instrukcji można określić format danych w instrukcji . W przypadku instrukcji OPENROWSET (Transact-SQL) należy określić format danych w pliku formatu.
Format znaku jest obsługiwany przez następujące opcje polecenia:
Polecenie | Opcja | Opis |
---|---|---|
bcp |
-c |
Powoduje, że narzędzie bcp korzysta z danych znakowych. |
BULK INSERT |
DATAFILETYPE ='char' |
Użyj formatu znaków podczas zbiorczego importowania danych. |
OPENROWSET |
N/A | Musi używać pliku formatu |
* Aby załadować dane (-c
) do formatu zgodnego z wcześniejszymi wersjami klientów programu SQL Server, użyj przełącznika -V
. Aby uzyskać więcej informacji, zobacz Importowanie danych w formacie natywnym i znakowym z wcześniejszych wersji SQL Server.
Notatka
Alternatywnie można określić formatowanie dla poszczególnych pól w pliku formatu. Aby uzyskać więcej informacji, zobacz Pliki formatu do importu lub eksportu danych (SQL Server).
Przykładowe warunki testu
Przykłady w tym artykule są oparte na poniższej tabeli i pliku formatu.
Przykładowa tabela
Poniższy skrypt tworzy testową bazę danych, tabelę o nazwie myChar
i wypełnia tabelę kilkoma początkowymi wartościami. Wykonaj polecenie Transact-SQL w programie 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;
Przykładowy plik formatu innego niż XML
Program SQL Server obsługuje dwa typy plików formatu: format inny niż XML i format XML. Format inny niż XML jest oryginalnym formatem obsługiwanym przez wcześniejsze wersje programu SQL Server. Aby uzyskać więcej informacji, zobacz Pliki w formacie innym niż XML (SQL Server). Następujące polecenie używa narzędzia bcp do generowania pliku formatu innego niż xml, myChar.fmt
, na podstawie schematu myChar
. Aby użyć polecenia bcp w celu utworzenia pliku formatu, określ argument FORMAT
i użyj nul
zamiast ścieżki pliku danych. Opcja formatowania wymaga również opcji -f
. Ponadto w tym przykładzie kwalifikator c
służy do określania danych znaków, a T
służy do określania zaufanego połączenia przy użyciu zintegrowanych zabezpieczeń.
W wierszu polecenia wprowadź następujące polecenie:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Ważny
Upewnij się, że plik w formacie innym niż XML kończy się powrotem karetki i znakiem końca linii. W przeciwnym razie prawdopodobnie zostanie wyświetlony następujący komunikat o błędzie:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Przykłady
W poniższych przykładach użyto plików bazy danych i formatu utworzonych wcześniej w tym artykule.
Eksportowanie danych przy użyciu bcp i formatu znakowego
-c
przełącznik i polecenie OUT
.
Plik danych utworzony w tym przykładzie będzie używany we wszystkich kolejnych przykładach.
W wierszu polecenia wprowadź następujące polecenie:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Użyj bcp i formatu znaków do importowania danych bez pliku formatu
Przełącznik -c
i polecenie IN
. W wierszu polecenia wprowadź następujące polecenie:
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;"
Importowanie danych z plikiem formatu innego niż XML przy użyciu formatu bcp i formatu znaków
Przełączniki -c
i -f
oraz polecenie IN
. W wierszu polecenia wprowadź następujące polecenie:
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;"
Używanie funkcji BULK INSERT i formatu znaków bez pliku formatu
Argument DATAFILETYPE
. Wykonaj następujący skrypt Transact-SQL w programie 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;
Używanie funkcji BULK INSERT i formatu znaków z plikiem formatu innego niż XML
Jest to przykład argumentu FORMATFILE
. Wykonaj następujące Transact-SQL w programie 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;
Używanie formatu OPENROWSET i formatu znaków z plikiem formatu innego niż XML
Przykład argumentu FORMATFILE
. Wykonaj polecenie Transact-SQL w programie 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;
Powiązane zadania
Aby używać formatów danych do importowania zbiorczego lub eksportu zbiorczego:
Importowanie danych formatu natywnego i znakowego z wcześniejszych wersji programu SQL Server
używanie formatu natywnego do importowania lub eksportowania danych (SQL Server)
używanie formatu znaków Unicode do importowania lub eksportowania danych (SQL Server)
używanie formatu natywnego Unicode do importowania lub eksportowania danych (SQL Server)