Membuat file format dengan bcp (SQL Server)

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

Artikel ini menjelaskan cara menggunakan utilitas bcp untuk membuat file format untuk tabel tertentu. File format didasarkan pada opsi jenis data yang ditentukan (-n, , -c, -watau -N) dan pemisah tabel atau tampilan.

Saat Anda mengimpor secara massal ke tabel SQL Server atau mengekspor data secara massal dari tabel, Anda dapat menggunakan file format sebagai sistem fleksibel untuk menulis file data. File format memerlukan sedikit atau tidak ada pengeditan untuk mematuhi format data lain, atau membaca file data dari program perangkat lunak lain.

Batasan

Versi bcp utilitas (bcp.exe) yang digunakan untuk membaca file format harus sama dengan, atau lebih baru, dari versi yang digunakan untuk membuat file format. Sebagai contoh, SQL Server 2025 (17.x) bcp dapat membaca file format versi 16.0, yang dihasilkan oleh SQL Server 2022 (16.x), bcptetapi SQL Server 2022 (16.x) bcp tidak dapat membaca file format versi 17.0, yang dihasilkan oleh SQL Server 2025 (17.x). bcp

Catatan

Sintaks ini, termasuk penyisipan massal, tidak didukung di Azure Synapse Analytics. Di Azure Synapse Analytics dan integrasi platform database cloud lainnya, selesaikan pergerakan data melalui pernyataan COPY di Azure Data Factory, atau dengan menggunakan pernyataan T-SQL seperti COPY INTO dan PolyBase.

Membuat format file

SQL Server mendukung dua jenis file format: format non-XML dan format XML. Format non-XML adalah format asli yang didukung oleh versi SQL Server sebelumnya.

Umumnya, file format XML dan non-XML dapat dipertukarkan. Namun, kami sarankan Anda menggunakan sintaks XML untuk file format, karena memberikan beberapa keuntungan daripada file format non-XML.

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server. Adventure Works Cycles adalah perusahaan manufaktur fiksi yang digunakan untuk menunjukkan konsep dan skenario database.

Buat file format

Untuk digunakan bcp untuk membuat file format, tentukan format argumen dan gunakan nul sebagai pengganti jalur file data. Opsi format selalu memerlukan opsi -f.

Untuk membuat file format XML, Anda harus menentukan -x opsi, seperti bcp <table_or_view> format nul -f <format_file_name> -x.

Untuk membedakan file format XML, gunakan .xml sebagai ekstensi nama file, misalnya, MyTable.xml.

Untuk informasi tentang struktur dan bidang file format XML, lihat file format XML.

Contoh

Bagian ini berisi contoh yang menunjukkan cara menggunakan bcp untuk membuat file format. Tabel HumanResources.Department berisi empat kolom: DepartmentID, , NameGroupName, dan ModifiedDate.

A. Buat file format untuk data karakter

Contoh berikut membuat file format untuk HumanResources.Department tabel menggunakan format data karakter.

Buat file format XML bernama Department-c.xml. Berkas format ini menggunakan terminator bidang non-default (,). Bagian berikut menunjukkan isi file format yang dihasilkan.

Perintah ini bcp berisi kualifikasi-kriteria berikut.

Kualifikasi Deskripsi
format nul -x -f <format_file> Menentukan berkas dalam format XML.
-c Menetapkan data karakter.
-t, Menentukan koma (,) sebagai pembatas bidang.

Catatan: Jika file data menggunakan terminator bidang default (\t), opsi -t tidak diperlukan.
-T Menentukan bahwa bcp terhubung ke SQL Server dengan koneksi terpercaya menggunakan keamanan terintegrasi. Jika Anda tidak menentukan -T, Anda harus menentukan -U dan -P untuk berhasil masuk.

Pada prompt perintah Windows, masukkan perintah berikut:bcp

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

File format yang dihasilkan, Department-c.xml, berisi elemen XML berikut:

<?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>

Untuk informasi tentang sintaks file format ini, lihat file format XML. Untuk informasi tentang data karakter, lihat Gunakan format karakter untuk mengimpor atau mengekspor data.

B. Buat file format untuk data asli

Contoh berikut membuat file format untuk HumanResources.Department tabel menggunakan tipe data asli.

Buat file format XML bernama Department-n.xml. Bagian berikut menunjukkan isi file format yang dihasilkan.

Perintah ini bcp berisi kualifikasi-kriteria berikut.

Kualifikasi Deskripsi
format nul -x -f <format_file> Menentukan berkas dalam format XML.
-n Menentukan jenis data asli.
-T Menentukan bahwa bcp terhubung ke SQL Server dengan koneksi terpercaya menggunakan keamanan terintegrasi. Jika Anda tidak menentukan -T, Anda harus menentukan -U dan -P untuk berhasil masuk.

Pada prompt perintah Windows, masukkan perintah berikut:bcp

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

File format yang dihasilkan, Department-n.xml, berisi elemen XML berikut:

<?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>

Untuk informasi tentang sintaks file format ini, lihat file format XML. Untuk informasi tentang cara menggunakan data native, lihat Gunakan format native untuk mengimpor atau mengekspor data.

C. Membuat file format non-XML untuk data asli Unicode

Untuk membuat file format non-XML untuk data asli Unicode untuk HumanResources.Department tabel, gunakan perintah berikut:

bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt

Untuk informasi lebih lanjut tentang cara menggunakan data native Unicode, lihat Gunakan Format Native Unicode untuk Mengimpor atau Mengekspor Data.

D. Membuat file format non-XML untuk data karakter Unicode

Untuk membuat file format non-XML untuk data karakter Unicode untuk HumanResources.Department tabel yang menggunakan terminator default, gunakan perintah berikut:

bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt

Untuk informasi lebih lanjut tentang cara menggunakan data karakter Unicode, lihat Gunakan format karakter Unicode untuk mengimpor atau mengekspor data.

E. Gunakan file format dengan opsi halaman kode

Saat Anda membuat file format menggunakan bcp format, perintah tersebut akan menuliskan informasi tentang kolasi dan halaman kode ke dalam file format.

Contoh file format berikut, untuk tabel dengan lima kolom, yang menyertakan pengurutan.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0          Cyrillic_General_CS_AS
2  SQLCHAR         0       0       "\t"             2     c_1          Cyrillic_General_CS_AS
3  SQLCHAR         0       3000    "\t"             3     c_2          Cyrillic_General_CS_AS
4  SQLCHAR         0       5       "\t"             4     c_3          ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""

Jika Anda mencoba mengimpor data ke SQL Server menggunakan bcp in -c -C65001 -f format_file ... atau dengan BULK INSERT atau OPENROWSET dengan FORMATFILE='format_file' CODEPAGE=65001 ..., informasi kolasi atau halaman kode dalam format file menjadi prioritas dibandingkan opsi 65001.

Oleh karena itu, jika Anda menghasilkan file format, Anda harus secara manual menghapus informasi kolasi dari file format yang dihasilkan sebelum mulai mengimpor data kembali ke SQL Server.

Contoh berikut menunjukkan file format tanpa informasi kolasi.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0              ""
2  SQLCHAR         0       0       "\t"             2     c_1              ""
3  SQLCHAR         0       3000    "\t"             3     c_2              ""
4  SQLCHAR         0       5       "\t"             4     c_3              ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""

Memetakan bidang data ke kolom tabel

File format yang dibuat oleh bcp menjelaskan semua kolom tabel secara berurutan. Anda dapat memodifikasi file format untuk mengatur ulang atau menghilangkan kolom tabel. Anda bisa menyesuaikan file format untuk file data yang bidangnya tidak dipetakan langsung ke kolom tabel. Untuk informasi lebih lanjut, baca artikel berikut: