Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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 definisiRECORD
. 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 atributSOURCE
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 dataAtribut XML opsional
untuk jenis dataNativeFixed
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/
WajibSOURCE="" 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 saatxsi: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 dariFIELDS
. Namun, jika kolom tidak bisa bernilai null dan bidang menentukanNULL
(dengan tidak menentukan nilai apa pun), akan menghasilkan kesalahan saat runtime.
AtributNULLABLE
digunakan hanya jika Anda melakukan pernyataanSELECT 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 Nilaixsi: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 dataAtribut XML yang diperlukan
untuk jenis dataAtribut XML opsional
untuk jenis dataTetap SQLBIT
,SQLTINYINT
,SQLSMALLINT
,SQLINT
,SQLBIGINT
,SQLFLT4
,SQLFLT8
,SQLDATETIME
,SQLDATETIM4
,SQLDATETIM8
,SQLMONEY
,SQLMONEY4
,SQLVARIANT
, danSQLUNIQUEID
Tidak ada. NULLABLE
Nomor variabel SQLDECIMAL
danSQLNUMERIC
Tidak ada. NULLABLE
,PRECISION
,SCALE
Tanggal dan waktu variabel SQLDATETIME2
,SQLTIME
,SQLDATETIMEOFFSET
Tidak ada. NULLABLE
,SCALE
LOB SQLIMAGE
,CharLOB
,SQLTEXT
, danSQLUDT
Tidak ada. NULLABLE
Karakter LOB SQLNTEXT
Tidak ada. NULLABLE
string biner SQLBINARY
danSQLVARYBIN
Tidak ada. NULLABLE
,LENGTH
string karakter SQLCHAR
,SQLVARYCHAR
,SQLNCHAR
, danSQLNVARCHAR
Tidak ada. NULLABLE
,LENGTH
Penting
Untuk mengekspor atau mengimpor data SQLXML secara massal, gunakan salah satu jenis data berikut dalam file format Anda:
SQLCHAR
atauSQLVARYCHAR
(data dikirim di halaman kode klien atau di halaman kode yang tersirat oleh kolase),SQLNCHAR
atauSQLNVARCHAR
(data dikirim sebagai Unicode), atauSQLBINARY
atauSQLVARYBIN
(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 besar
BULK INSERT
danOPENROWSET
)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 massalBULK INSERT
atauOPENROWSET
dibandingkan dengan bcp.Informasi dalam elemen
<ROW>
memungkinkan baris dibangun tanpa memerlukan informasi tambahan apa pun. Untuk alasan ini, Anda dapat menghasilkan set baris menggunakan pernyataanSELECT
(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:
- Mengurutkan bidang data karakter sama dengan kolom tabel
- Mengurutkan bidang data dan kolom tabel secara berbeda
- Hilangkan bidang data
- Memetakan berbagai jenis bidang ke kolom
- Memetakan data XML ke tabel
- Impor bidang panjang tetap atau lebar tetap
- Contoh tambahan
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:
- Menggunakan File Format untuk Melewati Kolom Tabel (SQL Server)
- Menggunakan File Format untuk Mengabaikan Bidang Data (SQL Server)
- Menggunakan File Format untuk Memetakan Kolom Tabel ke Bidang File Data (SQL Server)
Tugas terkait
- Membuat File Format (SQL Server)
- Menggunakan File Format untuk Mengimpor Data Secara Massal (SQL Server)
- Menggunakan File Format untuk Melewati Kolom Tabel (SQL Server)
- Menggunakan File Format untuk Mengabaikan Bidang Data (SQL Server)
- Menggunakan File Format untuk Memetakan Kolom Tabel ke Bidang File Data (SQL Server)