Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 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 Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków Unicode.
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 terminatorów pól i 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.123456jest eksportowana zbiorczo do pliku danych jako ciąg znakowy1234567.1235.
Opcje poleceń dla formatu znaków
Dane formatu znaków można zaimportować do tabeli przy użyciu narzędzia bcp, BULK INSERT (Transact-SQL) lub OPENROWSET (BULK). W przypadku polecenia bcp lub BULK INSERT (Transact-SQL) instrukcji można określić format danych w instrukcji . W przypadku instrukcji OPENROWSET (BULK) 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 używa danych znaków. 1 |
BULK INSERT |
DATAFILETYPE ='char' |
Użyj formatu znaków podczas zbiorczego importowania danych. |
OPENROWSET |
N/A | Musi używać pliku formatu |
1 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 Użyj plików 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 może zostać 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 jest 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 polecenie 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 polecenie 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 w formacie natywnym i znakowym z wcześniejszych wersji programu SQL Server
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu natywnego
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków Unicode
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu natywnego Unicode