Memformat file untuk mengimpor atau mengekspor data (SQL Server)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

Saat Anda mengimpor data secara massal ke tabel SQL Server atau mengekspor data secara massal dari tabel, Anda bisa menggunakan file format untuk menyimpan semua informasi format yang diperlukan untuk mengekspor massal atau mengimpor data secara massal. Ini termasuk informasi format untuk setiap bidang dalam file data yang relatif terhadap tabel tersebut.

SQL Server mendukung dua jenis file format: format XML dan file format non-XML. File format non-XML dan file format XML berisi deskripsi setiap bidang dalam file data, dan file format XML juga berisi deskripsi kolom tabel yang sesuai. Umumnya, file format XML dan non-XML dapat dipertukarkan. Namun, kami sarankan Anda menggunakan sintaks XML untuk file format baru karena memberikan beberapa keuntungan daripada file format non-XML. Untuk informasi selengkapnya, lihat File Format 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 format file

File format menyediakan sistem fleksibel untuk menulis file data yang memerlukan sedikit atau tanpa pengeditan untuk mematuhi format data lain atau membaca file data dari perangkat lunak lain.

Anda dapat mengimpor data secara massal tanpa harus menambahkan atau menghapus data yang tidak perlu atau menyusun ulang data yang ada dalam file data. File format dapat berguna ketika ketidakcocokan ada di antara bidang dalam file data dan kolom dalam tabel.

Contoh file format

Contoh berikut menunjukkan tata letak file format non-XML dan file format XML. File format ini sesuai dengan HumanResources.myTeam tabel dalam AdventureWorks2022 database sampel. Tabel ini berisi empat kolom: EmployeeID, , Name, Titledan ModifiedDate.

Catatan

Untuk informasi tentang tabel ini dan cara membuatnya, lihat Tabel sampel HumanResources.myTeam (SQL Server).

J. Menggunakan file format non-XML

File format non-XML berikut menggunakan format data asli SQL Server untuk HumanResources.myTeam tabel. File format ini dibuat dengan menggunakan perintah berikut bcp .

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T

Perintah bcp default ke instans lokal default SQL Server dengan Autentikasi Windows. Anda dapat menentukan instans lain dan informasi masuk seperti yang diinginkan, untuk informasi selengkapnya, lihat Utilitas bcp. Misalnya, untuk menentukan server jarak jauh bernama instans dengan Autentikasi Windows, gunakan:

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T -S servername/instancename

Isi file format ini adalah sebagai berikut, dimulai dengan nomor versi utama SQL Server, dan informasi metadata tabel.

14.0
4
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS

Untuk informasi selengkapnya, lihat Menggunakan file format Non-XML (SQL Server).

B. Menggunakan file format XML

File format XML berikut menggunakan format data asli SQL Server untuk HumanResources.myTeam tabel. File format ini dibuat dengan menggunakan perintah berikut bcp .

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

File format berisi:

<?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" LENGTH="1"/>
  <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="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>

Untuk informasi selengkapnya, lihat File Format XML (SQL Server).

Kapan file format diperlukan?

File format biasanya diperlukan dalam keadaan berikut:

  • Saat Anda menggunakan INSERT ... SELECT * FROM OPENROWSET(BULK...) pernyataan.

  • Untuk situasi impor massal yang kompleks menggunakan bcp atau BULK INSERT.

  • File data yang sama digunakan sebagai sumber untuk beberapa tabel yang memiliki skema berbeda.

  • File data memiliki jumlah bidang berbeda yang memiliki kolom tabel target; misalnya:

    • Tabel target berisi setidaknya satu kolom yang nilai defaultnya ditentukan atau NULL diizinkan.
    • Pengguna tidak memiliki SELECT/INSERT izin pada satu atau beberapa kolom dalam tabel.
    • Satu file data digunakan dengan dua tabel atau lebih yang memiliki skema berbeda.
  • Urutan kolom berbeda untuk file data dan tabel.

  • Karakter penghentian atau panjang awalan berbeda di antara kolom file data.

Catatan

Dengan tidak adanya file format, jika perintah bcp menentukan sakelar format data (-n, , -c, -watau -N) atau BULK INSERT operasi menentukan DATAFILETYPE opsi, format data yang ditentukan digunakan sebagai metode default untuk menginterpretasikan bidang file data.