Bagikan melalui


File format XML (SQL Server)

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

SQL Server menyediakan skema XML yang menentukan sintaksis untuk menulis file format XML yang digunakan untuk mengimpor data secara massal ke dalam tabel SQL Server. File format XML harus mematuhi skema ini, yang didefinisikan 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 BULK INSERT, atau pernyataan INSERT ... SELECT * FROM OPENROWSET(BULK...). Perintah bcp memungkinkan Anda membuat file format XML secara otomatis untuk tabel; untuk informasi selengkapnya, lihat utilitas bcp.

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 Menggunakan file format Non-XML (SQL Server).

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

Manfaat dari file berformat 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 menjelaskan dengan jelas 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 yang sesuai akan hilang.

File format XML memungkinkan pemuatan bidang yang berisi tipe data objek besar tunggal (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 elemen <FIELD> atau lebih. Elemen-elemen ini sesuai dengan bidang dalam file data. Sintaks dasarnya adalah sebagai berikut:

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

    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 Unicode 2-byte), 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:

    <ROW>
        <COLUMN .../> [ ...n ]
    </ROW>
    

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

Sintaks skema untuk file berformat 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 XML format aktual, lihat file contoh format XML.

Catatan

Anda dapat mengubah file format untuk memungkinkan Anda mengimpor secara massal dari file data di mana jumlah 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 artikel ini.

Skema elemen

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

  • <BCPFORMAT>

    Elemen format-file yang menentukan struktur rekaman file data tertentu dan korespondensinya ke kolom baris tabel dalam tabel.

  • <RECORD .../>

    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.

  • <FIELD .../>

    Menentukan bidang dalam file data, yang berisi data. Atribut elemen ini dibahas dalam Atribut <FIELD> Elemen, kemudian dalam artikel ini.

  • <ROW .../>

    Menentukan elemen kompleks yang berisi satu atau beberapa elemen <COLUMN>. Urutan elemen <COLUMN> independen dari 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 <COLUMN> terkait dideklarasikan dalam elemen <COLUMN>. Untuk informasi selengkapnya, lihat Cara Impor Massal Menggunakan Elemen <ROW>, nanti di artikel ini.

  • <COLUMN>

    Menentukan kolom sebagai elemen (<COLUMN>). Setiap elemen <COLUMN> sesuai dengan elemen <FIELD> (yang ID-nya ditentukan dalam atribut SOURCE elemen <COLUMN>). Atribut dari elemen ini dibahas dalam Atribut <COLUMN> Elemen, selanjutnya dalam artikel ini. Lihat juga, Cara Impor Massal Menggunakan <COLUMN> Elemen, di bagian lain artikel 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> independen dari yang lain. Bidang dijelaskan dari segi atribut berikut:

Atribut FIELD Deskripsi Fakultatif/
Wajib
ID="fieldID" Menentukan nama logis bidang dalam file data. ID bidang adalah kunci yang digunakan untuk merujuk ke bidang .

<FIELD ID="fieldID " /> peta ke <COLUMN SOURCE="fieldID" />
Wajib
xsi:type="fieldType" Ini adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis instans elemen. Nilai fieldType menentukan atribut opsional mana yang Anda butuhkan dalam instans tertentu. Diperlukan (tergantung pada jenis data)
LENGTH="n" Atribut ini mendefinisikan 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. PREFIX_LENGTH, p, harus menjadi salah satu nilai 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. Penggunaan fungsi OPENROWSET pada opsi BULK dalam klausa SELECT FROM sangat praktis.

Nilai m harus berupa bilangan bulat positif. Secara default, panjang maksimum adalah 8.000 karakter untuk kolom char dan 4.000 karakter untuk kolom nchar.
Opsional
COLLATION="collationName" COLLATION hanya diperbolehkan untuk bidang karakter. Untuk daftar nama kolasi SQL Server, silakan lihat Nama Kolasi SQL Server. Opsional
TERMINATOR="terminator" Atribut ini menentukan terminator bidang data. Terminator bisa menjadi karakter apa pun. Terminator harus menjadi karakter unik yang bukan bagian dari data.

Secara bawaan, pemisah bidang adalah karakter tab (dilambangkan sebagai \t). Untuk mewakili tanda paragraf, gunakan \r\n.
Atribut ini hanya dapat digunakan dengan data karakter xsi:type, di mana atribut ini diperlukan.

  • xsi:type nilai-nilai dari elemen <FIELD>

    Nilai xsi:type adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis data instans elemen. Untuk informasi selengkapnya, lihat Letakkan nilai xsi:type ke dalam kumpulan data di artikel ini.

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

    nilai <FIELD>xsi:type Atribut XML yang diperlukan
    untuk tipe data
    Atribut XML opsional
    untuk jenis data
    NativeFixed LENGTH Tidak ada.
    NativePrefix PREFIX_LENGTH MAX_LENGTH
    CharFixed LENGTH COLLATION
    NCharFixed LENGTH COLLATION
    CharPrefix PREFIX_LENGTH MAX_LENGTH, COLLATION
    NCharPrefix PREFIX_LENGTH MAX_LENGTH, COLLATION
    CharTerm TERMINATOR MAX_LENGTH, COLLATION
    NCharTerm TERMINATOR MAX_LENGTH, COLLATION

    Untuk informasi selengkapnya tentang jenis data SQL Server, lihat Jenis Data.

  • 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 Fakultatif/
    Wajib
    SOURCE="" Menentukan ID bidang yang sedang dipetakan ke kolom.

    <COLUMN SOURCE=fieldID"/> peta ke <FIELD ID=fieldID"/>
    Wajib
    NAME="Nama Kolom" 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. Wajib
    xsi:type="ColumnType" Ini adalah konstruksi XML (digunakan seperti atribut) yang mengidentifikasi jenis data instans elemen. Nilai ColumnType menentukan atribut opsional mana yang Anda butuhkan dalam instans tertentu.

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

    Nilai n harus berupa bilangan bulat positif.
    Opsional (hanya tersedia jika xsi:type adalah jenis data string)
    PRECISION="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)
    NULLABLE={ "YA" | "TIDAK" } Menunjukkan apakah kolom dapat mengasumsikan nilai NULL. Atribut ini independen dari FIELDS. Namun, jika kolom tidak bisa bernilai null dan bidang menentukan NULL (dengan tidak menentukan nilai apa pun), akan menghasilkan kesalahan saat runtime.

    Atribut NULLABLE digunakan hanya jika Anda melakukan pernyataan SELECT FROM OPENROWSET(BULK...) biasa.
    Opsional (tersedia untuk jenis data apa pun)

  • xsi:type nilai elemen <COLUMN>

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

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

    Kategori jenis <COLUMN> jenis data Atribut XML yang diperlukan
    untuk jenis data
    Atribut XML opsional
    untuk jenis data
    Tetap 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, PRECISION, SCALE
    Tanggal dan waktu variabel SQLDATETIME2, SQLTIME, SQLDATETIMEOFFSET Tidak ada. NULLABLE, SCALE
    LOB SQLIMAGE, CharLOB, SQLTEXT, dan SQLUDT Tidak ada. NULLABLE
    Karakter LOB SQLNTEXT Tidak ada. NULLABLE
    string biner SQLBINARY dan SQLVARYBIN Tidak ada. NULLABLE, LENGTH
    string karakter SQLCHAR, SQLVARYCHAR, SQLNCHAR, dan SQLNVARCHAR Tidak ada. NULLABLE, LENGTH

    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.

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>. Sebagai gantinya, bcp memuat data berdasarkan jenis kolom tabel target.

  • pernyataan Transact-SQL (penyedia pengelola kumpulan data besarBULK INSERT dan 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 ada ketidakcocokan 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 kehilangan presisi, dalam perilaku penyedia set baris massal BULK INSERT atau OPENROWSETdibandingkan dengan bcp.

    Informasi dalam elemen <ROW> memungkinkan baris dibangun tanpa memerlukan informasi tambahan apa pun. Untuk alasan ini, Anda dapat menghasilkan set baris menggunakan pernyataan SELECT (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).

    Klausa OPENROWSET BULK memerlukan file format. Mengonversi dari tipe data bidang ke tipe 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 tipe 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 <COLUMN> 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");
}

File Berformat XML Contoh

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:

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

A. Mengurutkan bidang data karakter agar sesuai dengan urutan 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 berkorespondensi satu per satu dengan kolom tabel.

  • Tabel (baris):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • File data (rekaman):Age<tab>FirstName<tab>LastName<return>

File format XML berikut membaca dari file data ke tabel.

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

Bidang data berkorespondensi satu per 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 setara AdventureWorks2022 , 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):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • Berkas data (rekaman):Age<tab>FirstName<tab>LastName<return>

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

<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 setara AdventureWorks2022 , lihat Menggunakan File Format untuk Memetakan Kolom Tabel ke Bidang File Data (SQL Server).

C. Mengabaikan 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):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • File data (rekaman):Age<tab>FirstName<tab>LastName<return>

Dalam elemen <RECORD>, format berkas mewakili nilai data di keempat bidang sebagai data karakter. Untuk setiap bidang, TERMINATOR atribut 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 setara AdventureWorks2022 , 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 dipetakan ke jenis data int dan kolom kedua dipetakan ke jenis data xml.

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 masing-masing memiliki 10 atau 6 karakter. File format mewakili panjang/lebar bidang ini sebagai LENGTH="10" dan LENGTH="6", masing-masing. Setiap baris file data diakhir 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 selengkapnya dari file format non-XML dan file format XML, lihat artikel berikut ini: