Bagikan melalui


File Format XML (SQL Server)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

SQL Server menyediakan skema XML yang menentukan sintaksis untuk menulis file format XML yang akan digunakan untuk mengimpor data secara massal ke dalam tabel SQL Server. File format XML harus mematuhi skema ini, yang ditentukan dalam Bahasa Definisi Skema XML (XSDL). File format XML hanya didukung ketika alat SQL Server diinstal bersama dengan SQL Server Native Client.

Anda dapat menggunakan file format XML dengan perintah bcp , pernyataan INSERT MASSAL, atau INSERT ... SELECT * FROM OPENROWSET(BULK...) pernyataan. Perintah bcp memungkinkan Anda membuat file format XML secara otomatis untuk tabel; untuk informasi selengkapnya, lihat Utilitas bcp.

Catatan

Dua jenis file format didukung untuk mengekspor dan mengimpor secara massal: file format non-XML dan file format XML. File format XML menyediakan alternatif yang fleksibel dan kuat untuk file format non-XML. Untuk informasi tentang file format non-XML, lihat File Format Non-XML (SQL Server).

Catatan

Sintaks ini, termasuk penyisipan massal, tidak didukung di Azure Synapse Analytics. Dalam 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.

Manfaat file format XML

  • File format XML menjelaskan sendiri, membuatnya mudah dibaca, dibuat, dan diperluas. Mereka dapat dibaca manusia, sehingga mudah untuk memahami bagaimana data ditafsirkan selama operasi massal.

  • File format XML berisi jenis data kolom target. Pengodean XML dengan jelas menjelaskan jenis data dan elemen data file data dan juga pemetaan antara elemen data dan kolom tabel.

    Ini memungkinkan pemisahan antara bagaimana data diwakili dalam file data dan jenis data apa yang terkait dengan setiap bidang dalam file. Misalnya, jika file data berisi representasi karakter data, jenis kolom SQL terkait akan hilang.

  • File format XML memungkinkan pemuatan bidang yang berisi satu jenis data objek besar (LOB) dari file data.

  • File format XML dapat ditingkatkan namun tetap kompatibel dengan versi sebelumnya. Selain itu, kejelasan pengodean XML memfasilitasi pembuatan beberapa file format untuk file data tertentu. Ini berguna jika Anda harus memetakan semua atau beberapa bidang data ke kolom dalam tabel atau tampilan yang berbeda.

  • Sintaks XML tidak bergantung pada arah operasi; artinya, sintaksnya sama untuk ekspor massal dan impor massal.

  • Anda dapat menggunakan file format XML untuk mengimpor data secara massal ke dalam tabel atau tampilan non-partisi dan untuk mengekspor data secara massal.

  • Untuk fungsi OPENROWSET(BULK...) yang menentukan tabel target bersifat opsional. Ini karena fungsi bergantung pada file format XML untuk membaca data dari file data.

    Catatan

    Tabel target diperlukan dengan perintah bcp dan pernyataan BULK INSERT, yang menggunakan kolom tabel target untuk melakukan konversi jenis.

Struktur file format XML

Seperti file format non-XML, file format XML menentukan format dan struktur bidang data dalam file data dan memetakan bidang data tersebut ke kolom dalam satu tabel target.

File format XML memiliki dua komponen utama, <RECORD> dan <ROW>:

  • <RECORD> menjelaskan data seperti yang disimpan dalam file data.

    Setiap <elemen RECORD> berisi satu set atau beberapa <elemen FIELD> . Elemen-elemen ini sesuai dengan bidang dalam file data. Sintaks dasarnya adalah sebagai berikut:

    <CATATAN>

    <FIELD .../> [ ... n ]

    </CATATAN>

    Setiap <elemen FIELD> menjelaskan konten bidang data tertentu. Bidang hanya dapat dipetakan ke satu kolom dalam tabel. Tidak semua bidang perlu dipetakan ke kolom.

    Bidang dalam file data dapat berupa panjang tetap/variabel atau karakter dihentikan. Nilai bidang dapat direpresentasikan sebagai: karakter (menggunakan representasi byte tunggal), karakter lebar (menggunakan representasi dua byte Unicode), format database asli, atau nama file. Jika nilai bidang direpresentasikan sebagai nama file, nama file menunjuk ke file yang berisi nilai kolom BLOB dalam tabel target.

  • <ROW> menjelaskan cara membuat baris data dari file data saat data dari file diimpor ke dalam tabel SQL Server.

    Elemen <ROW> berisi sekumpulan <elemen COLUMN> . Elemen-elemen ini sesuai dengan kolom tabel. Sintaks dasarnya adalah sebagai berikut:

    <BARIS>

    <KOLOM .../> [ ... n ]

    </BARIS>

    Setiap <elemen COLUMN> hanya dapat dipetakan ke satu bidang dalam file data. Urutan <elemen COLUMN> dalam <elemen ROW> menentukan urutan pengembaliannya oleh operasi massal. File format XML menetapkan setiap <elemen COLUMN> nama lokal yang tidak memiliki hubungan dengan kolom dalam tabel target operasi impor massal.

Sintaksis skema untuk file format XML

Bagian ini berisi ringkasan elemen dan atribut skema XML untuk file format XML. Sintaks file format tidak bergantung pada arah operasi; artinya, sintaksnya sama untuk ekspor massal dan impor massal. Bagian ini juga mempertimbangkan bagaimana impor massal menggunakan <elemen ROW> dan <COLUMN> dan cara menempatkan nilai xsi:type elemen ke dalam himpunan data.

Untuk melihat bagaimana sintaksis sesuai dengan file format XML aktual, lihat contoh file format XML.

Catatan

Anda dapat mengubah file format untuk memungkinkan Anda mengimpor secara massal dari file data di mana angka dan/atau urutan bidang berbeda dari jumlah dan/atau urutan kolom tabel. Untuk informasi selengkapnya, lihat Format File untuk Mengimpor atau Mengekspor Data (SQL Server).

Sintaks dasar skema XML

Pernyataan sintaks ini hanya menunjukkan elemen (<BCPFORMAT>, RECORD>, <<FIELD>, <ROW>, dan COLUMN>) dan <atribut dasarnya.

Catatan

Atribut tambahan yang terkait dengan nilai xsi:type dalam <elemen FIELD> atau <COLUMN> dijelaskan nanti dalam topik ini.

Elemen skema

Bagian ini meringkas tujuan setiap elemen yang ditentukan skema XML untuk file format XML. Atribut dijelaskan di bagian terpisah nanti dalam topik ini.

<BCPFORMAT>
Adalah elemen format-file yang menentukan struktur rekaman file data tertentu dan korespondensinya dengan kolom baris tabel dalam tabel.

<CATATAN.../>
Menentukan elemen kompleks yang berisi satu atau beberapa <elemen FIELD> . Urutan di mana bidang dideklarasikan dalam file format adalah urutan bidang tersebut muncul dalam file data.

<BIDANG.../>
Menentukan bidang dalam file data, yang berisi data.

Atribut elemen ini dibahas dalam Atribut <Elemen FIELD>, nanti dalam topik ini.

<BARIS.../>
Menentukan elemen kompleks yang berisi satu atau beberapa <elemen COLUMN> . Urutan <elemen COLUMN> tidak bergantung pada urutan <elemen FIELD> dalam definisi RECORD. Sebaliknya, urutan <elemen COLUMN> dalam file format menentukan urutan kolom dari set baris yang dihasilkan. Bidang data dimuat dalam urutan di mana elemen KOLOM terkait <dideklarasikan dalam <elemen COLUMN>.>

Untuk informasi selengkapnya, lihat Cara Impor Massal Menggunakan <Elemen ROW>, nanti dalam topik ini.

<KOLOM>
Menentukan kolom sebagai elemen (<COLUMN>). Setiap <elemen COLUMN> sesuai dengan <elemen FIELD> (yang ID-nya ditentukan dalam atribut SOURCE elemen <COLUMN> ).

Atribut elemen ini dibahas dalam Atribut <Elemen COLUMN>, nanti dalam topik ini. Lihat juga, Bagaimana Impor Massal Menggunakan <Elemen KOLOM>, nanti dalam topik ini.

</BCPFORMAT>
Diperlukan untuk mengakhiri file format.

<Atribut elemen FIELD>

Bagian ini menjelaskan atribut <elemen FIELD> , yang dirangkum dalam sintaks skema berikut:

<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>

Setiap <elemen FIELD> tidak bergantung pada yang lain. Bidang dijelaskan dalam hal atribut berikut:

Atribut FIELD Deskripsi Opsional/

Diperlukan
ID ="fieldID" Menentukan nama logis bidang dalam file data. ID bidang adalah kunci yang digunakan untuk merujuk ke bidang .

<FIELD ID**="fieldID"/> memetakan ke <COLUMN SOURCE="fieldID"**/>
Diperlukan
xsi:type ="fieldType" Ini adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis instans elemen. Nilai fieldType menentukan atribut opsional mana (di bawah) yang Anda butuhkan dalam instans tertentu. Diperlukan (tergantung pada jenis data)
LENGTH ="n" Atribut ini menentukan panjang untuk instans jenis data dengan panjang tetap.

Nilai n harus berupa bilangan bulat positif.
Opsional kecuali diperlukan oleh nilai xsi:type
PREFIX_LENGTH ="p" Atribut ini menentukan panjang awalan untuk representasi data biner. Nilai PREFIX_LENGTH, p, harus salah satu dari yang berikut: 1, 2, 4, atau 8. Opsional kecuali diperlukan oleh nilai xsi:type
MAX_LENGTH ="m" Atribut ini adalah jumlah maksimum byte yang dapat disimpan di bidang tertentu. Tanpa tabel target, panjang maksimum kolom tidak diketahui. Atribut MAX_LENGTH membatasi panjang maksimum kolom karakter output, membatasi penyimpanan yang dialokasikan untuk nilai kolom. Ini sangat nyaman saat menggunakan opsi BULK fungsi OPENROWSET dalam klausa SELECT FROM.

Nilai m harus berupa bilangan bulat positif. Secara default, panjang maksimum adalah 8000 karakter untuk kolom karakter dan 4000 karakter untuk kolom nchar .
Opsional
COLLATION ="collationName" COLLATION hanya diperbolehkan untuk bidang karakter. Untuk daftar nama kolate SQL, lihat Nama Kolater SQL Server (Transact-SQL). Opsional
TERMINATOR = "terminator" Atribut ini menentukan penghentian bidang data. Terminator dapat berupa karakter apa pun. Terminator harus merupakan karakter unik yang bukan bagian dari data.

Secara default, terminator bidang adalah karakter tab (direpresentasikan sebagai \t). Untuk mewakili tanda paragraf, gunakan \r\n.
Hanya digunakan dengan data karakter xsi:type, yang memerlukan atribut ini
Xsi:ketik nilai <elemen FIELD>

Nilai xsi:type adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis data instans elemen. Untuk informasi tentang menggunakan "Menempatkan Nilai xsi:type ke dalam Himpunan Data," nanti di bagian ini.

Nilai xsi:type dari <elemen FIELD> mendukung jenis data berikut.

<NILAI FIELD> xsi:type Atribut XML yang Diperlukan

untuk Tipe Data
Atribut XML Opsional

untuk Tipe Data
NativeFixed LENGTH Tidak ada.
NativePrefix PREFIX_LENGTH MAX_LENGTH
CharFixed LENGTH PEMERIKSAAN
NCharFixed LENGTH PEMERIKSAAN
CharPrefix PREFIX_LENGTH MAX_LENGTH, KOLADAN
NCharPrefix PREFIX_LENGTH MAX_LENGTH, KOLADAN
CharTerm TERMINATOR MAX_LENGTH, KOLADAN
NCharTerm TERMINATOR MAX_LENGTH, KOLADAN

Untuk informasi selengkapnya tentang jenis data Microsoft SQL Server, lihat Jenis Data (Transact-SQL).

<Atribut elemen COLUMN>

Bagian ini menjelaskan atribut <elemen COLUMN> , yang dirangkum dalam sintaks skema berikut:

<COLUMN
SOURCE = "fieldID"
NAME = "columnName"
xsi:type = "columnType"
[ LENGTH = "n" ]
[ PRECISION = "n" ]
[ SCALE = "value" ]
[ NULLABLE = { "YES"
"NO" } ]
/>

Bidang dipetakan ke kolom dalam tabel target menggunakan atribut berikut:

Atribut COLUMN Deskripsi Opsional/

Diperlukan
SOURCE ="fieldID" Menentukan ID bidang yang sedang dipetakan ke kolom.

<COLUMN SOURCE**="fieldID"/> maps to <FIELD ID="fieldID"**/>
Diperlukan
NAME = "columnName" Menentukan nama kolom dalam kumpulan baris yang diwakili oleh file format. Nama kolom ini digunakan untuk mengidentifikasi kolom dalam tataan hasil, dan tidak perlu sesuai dengan nama kolom yang digunakan dalam tabel target. Diperlukan
xsi**:type ="ColumnType"** Ini adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis data instans elemen. Nilai ColumnType menentukan atribut opsional mana (di bawah) yang Anda butuhkan dalam instans tertentu.

Catatan: Kemungkinan nilai ColumnType dan atribut terkaitnya tercantum dalam <tabel elemen COLUMN> di nilai Xsi:type dari bagian <> COLUMN Element.
Opsional
LENGTH ="n" Menentukan panjang untuk instans jenis data dengan panjang tetap. LENGTH hanya digunakan ketika xsi:type adalah jenis data string.

Nilai n harus berupa bilangan bulat positif.
Opsional (hanya tersedia jika xsi:type adalah jenis data string)
PRESISI ="n" Menunjukkan jumlah digit dalam angka. Misalnya, angka 123,45 memiliki presisi 5.

Nilai harus berupa bilangan bulat positif.
Opsional (hanya tersedia jika xsi:type adalah jenis data nomor variabel)
SCALE ="int" Menunjukkan jumlah digit di sebelah kanan titik desimal dalam angka. Misalnya, angka 123,45 memiliki skala 2.

Nilai harus berupa bilangan bulat.
Opsional (hanya tersedia jika xsi:type adalah jenis data nomor variabel)
DAPAT DIUBAH KE = NULL { "YA"

"TIDAK" }
Menunjukkan apakah kolom dapat mengasumsikan nilai NULL. Atribut ini sepenuhnya independen dari FIELDS. Namun, jika kolom tidak NULLABLE dan bidang menentukan NULL (dengan tidak menentukan nilai apa pun), hasil kesalahan run-time.

Atribut NULLABLE hanya digunakan jika Anda melakukan pernyataan SELECT FROM OPENROWSET(BULK...) biasa.
Opsional (tersedia untuk jenis data apa pun)
Nilai Xsi:type dari <elemen COLUMN>

Nilai xsi:type adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis data instans elemen. Untuk informasi tentang menggunakan "Menempatkan Nilai xsi:type ke dalam Himpunan Data," nanti di bagian ini.

Elemen <COLUMN> mendukung jenis data SQL asli, sebagai berikut:

Kategori Jenis <Tipe Data KOLOM> Atribut XML yang Diperlukan

untuk Tipe Data
Atribut XML Opsional

untuk Tipe Data
Diperbaiki SQLBIT, SQLTINYINT, SQLSMALLINT, SQLINT, SQLBIGINT, SQLFLT4, SQLFLT8, SQLDATETIME, SQLDATETIM4, SQLDATETIM8, SQLMONEY, SQLMONEY4, SQLVARIANT, dan SQLUNIQUEID Tidak ada. NULLABLE
Nomor Variabel SQLDECIMAL dan SQLNUMERIC Tidak ada. NULLABLE, PRESISI, SKALA
LOB SQLIMAGE, CharLOB, SQLTEXT, dan SQLUDT Tidak ada. NULLABLE
LOB Karakter SQLNTEXT Tidak ada. NULLABLE
String biner SQLBINARY dan SQLVARYBIN Tidak ada. DAPAT DIUBAH KE NULL, PANJANG
String karakter SQLCHAR, SQLVARYCHAR, SQLNCHAR, dan SQLNVARCHAR Tidak ada. DAPAT DIUBAH KE NULL, PANJANG

Penting

Untuk mengekspor atau mengimpor data SQLXML secara massal, gunakan salah satu jenis data berikut dalam file format Anda: SQLCHAR atau SQLVARYCHAR (data dikirim di halaman kode klien atau di halaman kode yang tersirat oleh kolase), SQLNCHAR atau SQLNVARCHAR (data dikirim sebagai Unicode), atau SQLBINARY atau SQLVARYBIN (data dikirim tanpa konversi apa pun).

Untuk informasi selengkapnya tentang jenis data SQL Server, lihat Jenis Data (Transact-SQL).

Bagaimana impor massal menggunakan <elemen ROW>

Elemen <ROW> diabaikan dalam beberapa konteks. <Apakah elemen ROW> memengaruhi operasi impor massal tergantung pada bagaimana operasi dilakukan:

  • Perintah bcp

    Saat data dimuat ke dalam tabel target, bcp mengabaikan <komponen ROW> . Sebaliknya, bcp memuat data berdasarkan jenis kolom tabel target.

  • Pernyataan Transact-SQL (BULK INSERT dan penyedia rowset massal OPENROWSET)

    Saat mengimpor data secara massal ke dalam tabel, pernyataan Transact-SQL menggunakan <komponen ROW> untuk menghasilkan set baris input. Selain itu, pernyataan Transact-SQL melakukan konversi jenis yang sesuai berdasarkan jenis kolom yang ditentukan di bawah <ROW> dan kolom terkait dalam tabel target. Jika ketidakcocokan ada di antara jenis kolom seperti yang ditentukan dalam file format dan dalam tabel target, konversi jenis tambahan terjadi. Konversi jenis tambahan ini dapat menyebabkan beberapa perbedaan (yaitu, hilangnya presisi) dalam perilaku di BULK INSERT atau penyedia rowset Massal OPENROWSET dibandingkan dengan bcp.

    Informasi dalam <elemen ROW> memungkinkan baris dibangun tanpa memerlukan informasi tambahan apa pun. Untuk alasan ini, Anda dapat membuat set baris menggunakan pernyataan SELECT (SELECT * FROM OPENROWSET(BULK datafile FORMATFILE=xmlformatfile).

    Catatan

    Klausa OPENROWSET BULK memerlukan file format (perhatikan bahwa mengonversi dari jenis data bidang ke jenis data kolom hanya tersedia dengan file format XML).

Bagaimana impor massal menggunakan <elemen COLUMN>

Untuk mengimpor data secara massal ke dalam tabel, <elemen COLUMN> dalam file format memetakan bidang file data ke kolom tabel dengan menentukan:

  • Posisi setiap bidang dalam baris dalam file data.

  • Jenis kolom, yang digunakan untuk mengonversi jenis data bidang ke jenis data kolom yang diinginkan.

Jika tidak ada kolom yang dipetakan ke bidang, bidang tidak disalin ke dalam baris yang dihasilkan. Perilaku ini memungkinkan file data untuk menghasilkan baris dengan kolom yang berbeda (dalam tabel yang berbeda).

Demikian pula, untuk mengekspor data secara massal dari tabel, setiap <KOLOM> dalam file format memetakan kolom dari baris tabel input ke bidang yang sesuai dalam file data output.

Masukkan nilai xsi:type ke dalam himpunan data

Saat dokumen XML divalidasi melalui bahasa Definisi Skema XML (XSD), nilai xsi:type tidak dimasukkan ke dalam himpunan data. Namun, Anda dapat memasukkan informasi xsi:type ke dalam himpunan data dengan memuat file format XML ke dalam dokumen XML (misalnya, myDoc), seperti yang diilustrasikan dalam cuplikan kode berikut:

...;  
myDoc.LoadXml(xmlFormat);  
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");  
for(int i=0;i<ColumnList.Count;i++)  
{  
   Console.Write("COLUMN: xsi:type=" +ColumnList[i].Attributes["type",  
      "http://www.w3.org/2001/XMLSchema-instance"].Value+"\n");  
}

Contoh file format XML

Bagian ini berisi informasi tentang menggunakan file format XML dalam berbagai kasus, termasuk contoh Adventure Works.

Catatan

Dalam file data yang diperlihatkan dalam contoh berikut, <tab> menunjukkan karakter tab dalam file data, dan <return> menunjukkan pengembalian pengangkutan.

Contoh mengilustrasikan aspek utama penggunaan file format XML, sebagai berikut:

Catatan

Untuk informasi tentang cara membuat file format, lihat Membuat File Format (SQL Server).

J. Mengurutkan bidang data karakter sama dengan kolom tabel

Contoh berikut menunjukkan file format XML yang menjelaskan file data yang berisi tiga bidang data karakter. File format memetakan file data ke tabel yang berisi tiga kolom. Bidang data sesuai satu-ke-satu dengan kolom tabel.

Tabel (baris): Orang (Usia int, FirstName varchar(20), LastName varchar(30))

File data (rekaman):>Tab Usia<Nama<Depan tab>Nama<Belakang kembali>

File format XML berikut membaca dari file data ke tabel.

<RECORD> Dalam elemen , file format mewakili nilai data di ketiga bidang sebagai data karakter. Untuk setiap bidang, TERMINATOR atribut menunjukkan terminator yang mengikuti nilai data.

Bidang data sesuai satu-ke-satu dengan kolom tabel. <ROW> Dalam elemen , file format memetakan kolom Age ke bidang pertama, kolom FirstName ke bidang kedua, dan kolom LastName ke bidang ketiga.

<?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="\t"  
      MAX_LENGTH="12"/>  
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"  
      MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"  
      MAX_LENGTH="30"  
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  </RECORD>  
  <ROW>  
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>  
    <COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR"/>  
    <COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR"/>  
  </ROW>  
</BCPFORMAT>

Catatan

Untuk contoh yang setaraAdventureWorks2022, lihat Membuat File Format (SQL Server).

B. Mengurutkan bidang data dan kolom tabel secara berbeda

Contoh berikut menunjukkan file format XML yang menjelaskan file data yang berisi tiga bidang data karakter. File format memetakan file data ke tabel yang berisi tiga kolom yang diurutkan secara berbeda dari bidang file data.

Tabel (baris): Orang (Usia int, FirstName varchar(20), LastName varchar(30))

File data (rekaman): Tab>Usia<Nama Belakang<tab>Nama Depan menampilkan Nama Depan<>

<RECORD> Dalam elemen , file format mewakili nilai data di ketiga bidang sebagai data karakter.

<ROW> Dalam elemen , file format memetakan kolom Age ke bidang pertama, kolom FirstName ke bidang ketiga, dan kolom LastName ke bidang kedua.

<?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="\t"  
      MAX_LENGTH="12"/>  
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20"  
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"  
      MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  </RECORD>  
  <ROW>  
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>  
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>  
    <COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR"/>  
  </ROW>  
</BCPFORMAT>

Catatan

Untuk contoh yang setaraAdventureWorks2022, lihat Menggunakan File Format untuk Memetakan Kolom Tabel ke Bidang Data-File (SQL Server).

C. Menghilangkan bidang data

Contoh berikut menunjukkan file format XML yang menjelaskan file data yang berisi empat bidang data karakter. File format memetakan file data ke tabel yang berisi tiga kolom. Bidang data kedua tidak sesuai dengan kolom tabel apa pun.

Tabel (baris): Orang (Usia int, FirstName Varchar(20), LastName Varchar(30))

File data (rekaman): Tab usia<>employeeID<tab>Nama Depan<tab>Nama<Belakang ditampilkan>

<RECORD> Dalam elemen , file format mewakili nilai data di keempat bidang sebagai data karakter. Untuk setiap bidang, atribut TERMINATOR menunjukkan terminator yang mengikuti nilai data.

<ROW> Dalam elemen , file format memetakan kolom Age ke bidang pertama, kolom FirstName ke bidang ketiga, dan kolom LastName ke bidang keempat.

<?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="\t"  
      MAX_LENGTH="12"/>  
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"  
      MAX_LENGTH="10"  
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t"  
      MAX_LENGTH="20"  
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"  
      MAX_LENGTH="30"  
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  </RECORD>  
  <ROW>  
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>  
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>  
    <COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR"/>  
  </ROW>  
</BCPFORMAT>

Catatan

Untuk contoh yang setaraAdventureWorks2022, lihat Menggunakan File Format untuk Melewati Bidang Data (SQL Server).

D. Petakan <FIELD> xsi:type ke <COLUMN> xsi:type

Contoh berikut menunjukkan berbagai jenis bidang dan pemetaannya ke kolom.

<?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 xsi:type="CharTerm" ID="C1" TERMINATOR="\t"  
            MAX_LENGTH="4"/>  
      <FIELD xsi:type="CharFixed" ID="C2" LENGTH="10"  
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>  
      <FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2"  
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>  
      <FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t"  
         MAX_LENGTH="4"/>  
      <FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10"  
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>  
      <FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2"  
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>  
      <FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4"/>  
   </RECORD>  
   <ROW>  
      <COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT"/>  
      <COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR"  
      LENGTH="16" NULLABLE="NO"/>  
      <COLUMN SOURCE="C3" NAME="LastName" />  
      <COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY"/>  
      <COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE"/>  
      <COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT"/>  
      <COLUMN SOURCE="C7" NAME="Interest"xsi:type="SQLDECIMAL"  
      PRECISION="5" SCALE="3"/>  
   </ROW>  
</BCPFORMAT>

E. Memetakan data XML ke tabel

Contoh berikut membuat tabel dua kolom kosong (t_xml), di mana kolom pertama memetakan ke int jenis data dan peta kolom kedua ke xml jenis data.

CREATE TABLE t_xml (c1 int, c2 xml)

File format XML berikut akan memuat file data ke dalam tabel t_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="NativePrefix" PREFIX_LENGTH="1"/>  
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8"/>  
</RECORD>  
<ROW>  
  <COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT"/>  
  <COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR"/>  
</ROW>  
</BCPFORMAT>

F. Mengimpor bidang panjang tetap atau lebar tetap

Contoh berikut menjelaskan bidang tetap atau 106 karakter masing-masing. File format mewakili panjang/lebar bidang ini sebagai LENGTH="10" dan LENGTH="6", masing-masing. Setiap baris file data berakhir dengan kombinasi umpan baris kembali pengangkutan, {CR}{LF}, yang diwakili file format sebagai TERMINATOR="\r\n".

<?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="CharFixed" LENGTH="10"/>  
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="6"/>  
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"/>  
  </RECORD>  
  <ROW>  
    <COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />  
    <COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />  
  </ROW>  
</BCPFORMAT>

Contoh tambahan

Untuk contoh tambahan file format non-XML dan file format XML, lihat topik berikut:

Tugas terkait

Langkah berikutnya