Menggunakan format karakter untuk mengimpor atau mengekspor data (SQL Server)

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

Format karakter direkomendasikan saat Anda mengekspor data secara massal ke file teks yang akan digunakan dalam program lain atau ketika Anda mengimpor data secara massal dari file teks yang dihasilkan oleh program lain.

Format karakter menggunakan format data karakter untuk semua kolom. Menyimpan informasi dalam format karakter berguna saat data digunakan dengan program lain, seperti spreadsheet, atau ketika data perlu disalin ke dalam instans SQL Server dari vendor database lain seperti Oracle.

Catatan

Saat Anda mentransfer data secara massal antara instans Microsoft SQL Server dan file data berisi data karakter Unicode tetapi bukan karakter yang diperluas atau DBCS, gunakan format karakter Unicode. Untuk informasi selengkapnya, lihat Menggunakan Format Karakter Unicode untuk Mengimpor atau Mengekspor Data (SQL Server).

Dalam Topik ini:
Pertimbangan untuk Menggunakan Format Karakter
Opsi Perintah untuk Format Karakter
Contoh Kondisi Pengujian
 ● Tabel Sampel
 ● Contoh File Format Non-XML
Contoh
 ● Menggunakan bcp dan Format Karakter untuk Mengekspor Data
 ● Menggunakan Format bcp dan Karakter untuk Mengimpor Data tanpa File Format
 ● Menggunakan Format bcp dan Karakter untuk Mengimpor Data dengan File Format Non-XML
 ● Menggunakan INSERT MASSAL dan Format Karakter tanpa Format File
 ● Menggunakan INSERT MASSAL dan Format Karakter dengan File Format Non-XML
 ● Menggunakan OPENROWSET dan Format Karakter dengan File Format Non-XML
Tugas Terkait

Pertimbangan untuk Menggunakan Format Karakter

Saat menggunakan format karakter, pertimbangkan hal berikut:

  • Secara default, utilitas bcp memisahkan bidang data karakter dengan karakter tab dan mengakhiri rekaman dengan karakter baris baru. Untuk informasi tentang cara menentukan terminator alternatif, lihat Menentukan Terminator Bidang dan Baris (SQL Server).

  • Secara default, sebelum ekspor massal atau impor data mode karakter, konversi berikut dilakukan:

    Arah operasi massal Konversi
    Ekspor Mengonversi data menjadi representasi karakter. Jika diminta secara eksplisit, data dikonversi ke halaman kode yang diminta untuk kolom karakter. Jika tidak ada halaman kode yang ditentukan, data karakter dikonversi dengan menggunakan halaman kode OEM komputer klien.
    Impor Mengonversi data karakter menjadi representasi asli, jika perlu, dan menerjemahkan data karakter dari halaman kode klien ke halaman kode kolom target.
  • Untuk mencegah hilangnya karakter yang diperluas selama konversi, gunakan format karakter Unicode atau tentukan halaman kode.

  • Setiap sql_variant data yang disimpan dalam file format karakter disimpan tanpa metadata. Setiap nilai data dikonversi ke format karakter , sesuai dengan aturan konversi data implisit. Saat diimpor ke kolom sql_variant , data diimpor sebagai karakter. Saat diimpor ke kolom dengan jenis data selain sql_variant, data dikonversi dari karakter dengan menggunakan konversi implisit. Untuk informasi selengkapnya tentang konversi data, lihat Konversi Tipe Data (Mesin Database).

  • Utilitas bcp mengekspor nilai uang sebagai file data format karakter dengan empat digit setelah titik desimal dan tanpa simbol pengelompokan digit seperti pemisah koma. Misalnya, kolom uang yang berisi nilai 1,234,567.123456 diekspor secara massal ke file data sebagai string karakter 1234567.1235.

Opsi Perintah untuk Format Karakter

Anda dapat mengimpor data format karakter ke dalam tabel menggunakan bcp, BULK INSERT atau INSERT ... PILIH * DARI OPENROWSET(MASSAL...). Untuk perintah bcp atau pernyataan BULK INSERT , Anda dapat menentukan format data dalam pernyataan . Untuk INSERT ... PILIH * DARI OPENROWSET(MASSAL...) pernyataan , Anda harus menentukan format data dalam file format.

Format karakter didukung oleh opsi perintah berikut:

Perintah Opsi Deskripsi
bcp -C Menyebabkan utilitas bcp menggunakan data karakter.*
BULK INSERT DATAFILETYPE ='char' Gunakan format karakter saat mengimpor data secara massal.
OPENROWSET T/A Harus menggunakan file format

*Untuk memuat data karakter (-c) ke format yang kompatibel dengan versi klien SQL Server sebelumnya, gunakan sakelar -V. Untuk informasi selengkapnya, lihat Mengimpor Data Format Asli dan Karakter dari Versi SQL Server Sebelumnya.

Catatan

Atau, Anda dapat menentukan pemformatan berdasarkan per bidang dalam file format. Untuk informasi selengkapnya, lihat Memformat File untuk Mengimpor atau Mengekspor Data (SQL Server).

Contoh Kondisi Pengujian

Contoh dalam topik ini didasarkan pada tabel, dan format file yang ditentukan di bawah ini.

Tabel Sampel

Skrip di bawah ini membuat database pengujian, tabel bernama myChar dan mengisi tabel dengan beberapa nilai awal. Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myChar ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myChar;

Contoh File Format Non-XML

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. Silakan tinjau File Format Non-XML (SQL Server) untuk informasi terperinci. Perintah berikut akan menggunakan utilitas bcp untuk menghasilkan file format non-xml, myChar.fmt, berdasarkan skema myChar. Untuk menggunakan perintah bcp untuk membuat file format, tentukan argumen format dan gunakan nul alih-alih jalur file data. Opsi format juga memerlukan opsi -f . Selain itu, untuk contoh ini, kualifikasi c digunakan untuk menentukan data karakter, dan T digunakan untuk menentukan koneksi tepercaya menggunakan keamanan terintegrasi. Pada prompt perintah, masukkan perintah berikut:

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

REM Review file
Notepad D:\BCP\myChar.fmt

Penting

Pastikan file format non-XML Anda berakhir dengan pengangkutan return\line feed. Jika tidak, Anda mungkin akan menerima pesan kesalahan berikut:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

Contoh

Contoh di bawah ini menggunakan database, dan memformat file yang dibuat di atas.

Menggunakan bcp dan Format Karakter untuk Mengekspor Data

-c switch dan perintah OUT . Catatan: file data yang dibuat dalam contoh ini akan digunakan dalam semua contoh berikutnya. Pada prompt perintah, masukkan perintah berikut:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

REM Review results
NOTEPAD D:\BCP\myChar.bcp

Menggunakan Format bcp dan Karakter untuk Mengimpor Data tanpa File Format

-c switch dan perintah IN . Pada prompt perintah, masukkan perintah berikut:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Menggunakan Format Karakter dan bcp untuk Mengimpor Data dengan File Format Non-XML

Sakelar -c dan -f dan perintah IN . Pada prompt perintah, masukkan perintah berikut:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Menggunakan SISIPAN MASSAL dan Format Karakter tanpa Format File

Argumen DATAFILETYPE . Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
	FROM 'D:\BCP\myChar.bcp'
	WITH (
		DATAFILETYPE = 'Char'
		);

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Menggunakan INSERT MASSAL dan Format Karakter dengan File Format Non-XML

Argumen FORMATFILE . Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
   FROM 'D:\BCP\myChar.bcp'
   WITH (
		FORMATFILE = 'D:\BCP\myChar.fmt'
		);

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Menggunakan OPENROWSET dan Format Karakter dengan File Format Non-XML

Argumen FORMATFILE . Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar;  -- for testing
INSERT INTO TestDatabase.dbo.myChar
	SELECT *
	FROM OPENROWSET (
		BULK 'D:\BCP\myChar.bcp', 
		FORMATFILE = 'D:\BCP\myChar.fmt'  
		) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Untuk menggunakan format data untuk impor massal atau ekspor massal

Lihat juga

utilitas bcp
SISIPAN MASSAL (Transact-SQL)
OPENROWSET (Transact-SQL)
Tipe Data (Transact-SQL)
Impor Data Format Asli dan Karakter dari Versi SQL Server Sebelumnya