Udostępnij za pośrednictwem


Tworzenie pliku formatu za pomocą narzędzia bcp (SQL Server)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

W tym artykule opisano sposób użycia narzędzia bcp do utworzenia pliku formatu dla określonej tabeli. Plik formatu jest oparty na określonej opcji typu danych (-n, -c, -wlub -N) oraz ograniczników tabeli lub widoku.

Podczas zbiorczego importowania do tabeli programu SQL Server lub zbiorczego eksportowania danych z tabeli można użyć pliku formatu jako elastycznego systemu do zapisywania plików danych. Pliki formatu wymagają niewielkiej lub żadnej edycji w celu zachowania zgodności z innymi formatami danych lub odczytu plików danych z innych programów programowych.

Ograniczenia

Wersja narzędzia bcp (bcp.exe) używana do odczytu pliku formatu musi być taka sama jak lub nowsza niż wersja użyta do utworzenia pliku formatu. Na przykład program SQL Server 2016 (13.x) bcp może odczytać plik formatu w wersji 12.0, który jest generowany przez program SQL Server 2014 (12.x) bcp, ale program SQL Server 2014 (12.x) bcp nie może odczytać pliku w formacie 13.0, który jest generowany przez program SQL Server 2016 (13.x) bcp.

Notatka

Ta składnia, w tym wstawianie zbiorcze, nie jest obsługiwana w usłudze Azure Synapse Analytics. W usłudze Azure Synapse Analytics i innych integracji platformy bazy danych w chmurze wykonaj przenoszenie danych za pośrednictwem instrukcji COPY w usłudze Azure Data Factorylub za pomocą instrukcji języka T-SQL , takich jak COPY INTO i PolyBase.

Tworzenie plików formatu

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.

Ogólnie rzecz biorąc, pliki w formacie XML i inne niż XML są zamienne. Zalecamy jednak używanie składni XML do formatowania plików, ponieważ zapewniają one kilka zalet w porównaniu z plikami formatu innego niż XML.

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022 lub AdventureWorksDW2022, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności. Adventure Works Cycles to fikcyjna firma produkcyjna, która demonstruje pojęcia i scenariusze bazy danych.

Tworzenie pliku formatu XML

Aby użyć polecenia bcp w celu utworzenia pliku formatu, określ argument format i użyj nul zamiast ścieżki pliku danych. Opcja format zawsze wymaga opcji -f, a do utworzenia pliku w formacie XML należy również określić opcję -x, na przykład bcp <table_or_view> format nul -f <format_file_name> -x.

Aby odróżnić plik formatu XML, zalecamy użycie .xml jako rozszerzenia nazwy pliku, na przykład MyTable.xml.

Aby uzyskać informacje o strukturze i polach plików formatu XML, zobacz XML Format Files (SQL Server).

Przykłady

Ta sekcja zawiera następujące przykłady pokazujące, jak utworzyć plik w formacie XML za pomocą poleceń bcp. Tabela HumanResources.Department zawiera cztery kolumny: DepartmentID, Name, GroupNamei ModifiedDate.

A. Tworzenie pliku formatu XML dla danych znaków

Poniższy przykład tworzy plik formatu XML, Department.xml, dla tabeli HumanResources.Department. Plik formatu używa formatów danych znaków i terminatora pola innego niż domyślny (,). Zawartość wygenerowanego pliku formatu jest wyświetlana po poleceniu .

Polecenie bcp zawiera następujące kwalifikatory.

Kwalifikatory Opis
format nul -x -f <format_file> Określa plik formatu XML.
-c Określa dane znaków.
-t, Określa przecinek (,) jako terminator pola.

Uwaga: Jeśli plik danych używa domyślnego terminatora pola (\t), przełącznik -t jest niepotrzebny.
-T Określa, że narzędzie bcp łączy się z serwerem SQL Server za pomocą uwierzytelnionego połączenia przy użyciu zintegrowanych zabezpieczeń. Jeśli nie określono -T, musisz określić -U i -P, aby pomyślnie się zalogować.

W wierszu polecenia systemu Windows wprowadź następujące polecenie bcp:

bcp AdventureWorks2022.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

Wygenerowany plik formatu Department-c.xmlzawiera następujące elementy XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Aby uzyskać informacje o składni tego pliku formatu, zobacz XML Format Files (SQL Server). Aby uzyskać informacje na temat danych znaków, zobacz Używanie formatu znaków do importowania lub eksportowania danych (SQL Server).

B. Tworzenie pliku formatu XML dla danych natywnych

Poniższy przykład tworzy plik formatu XML, Department-n.xml, dla tabeli HumanResources.Department. Plik formatu używa natywnych typów danych. Zawartość wygenerowanego pliku formatu jest wyświetlana po poleceniu .

Polecenie bcp zawiera następujące modyfikatory.

Kwalifikatory Opis
format nul -x -f <format_file> Określa plik formatu XML.
-n Określa natywne typy danych.
-T Określa, że narzędzie bcp łączy się z SQL Server za pomocą zaufanego połączenia przy użyciu zabezpieczeń zintegrowanych. Jeśli nie określono -T, musisz określić -U i -P, aby pomyślnie się zalogować.

W wierszu polecenia systemu Windows wprowadź następujące polecenie bcp:

bcp AdventureWorks2022.HumanResources.Department format nul -x -f Department-n.xml -n -T

Wygenerowany plik formatu Department-n.xmlzawiera następujące elementy XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Aby uzyskać informacje o składni tego pliku formatu, zobacz XML Format Files (SQL Server). Aby uzyskać informacje na temat używania danych natywnych, zobacz Używanie formatu natywnego do importowania lub eksportowania danych (SQL Server).

Mapuj pola danych do kolumn tabeli

Utworzony przez bcp plik formatu opisuje wszystkie kolumny tabeli w kolejności. Możesz zmodyfikować plik formatu, aby zmienić kolejność lub pominąć wiersze tabeli. Plik formatu można dostosować do pliku danych, którego pola nie są mapowanie bezpośrednio do kolumn tabeli. Aby uzyskać więcej informacji, zobacz następujące artykuły: