Gunakan Format Asli Unicode untuk Mengimpor atau Mengekspor Data (SQL Server)

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

Format asli Unicode sangat membantu ketika informasi harus disalin dari satu penginstalan Microsoft SQL Server ke penginstalan lainnya. Penggunaan format asli untuk data noncharacter menghemat waktu, menghilangkan konversi jenis data yang tidak perlu ke dan dari format karakter. Penggunaan format karakter Unicode untuk semua data karakter mencegah hilangnya karakter yang diperluas selama transfer data massal antar server menggunakan halaman kode yang berbeda. File data dalam format asli Unicode dapat dibaca dengan metode impor massal apa pun.

Format asli Unicode direkomendasikan untuk transfer data secara massal antara beberapa instans SQL Server dengan menggunakan file data yang berisi karakter yang diperluas atau DBCS. Untuk data noncharacter, format asli Unicode menggunakan jenis data asli (database). Untuk data karakter, seperti char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max), dan ntext, format asli Unicode menggunakan format data karakter Unicode.

Data sql_variant yang disimpan sebagai SQLVARIANT dalam file data format asli Unicode beroperasi dengan cara yang sama seperti dalam file data format asli, kecuali bahwa nilai karakter dan varchar dikonversi ke nchar dan nvarchar, yang menggandakan jumlah penyimpanan yang diperlukan untuk kolom yang terpengaruh. Metadata asli dipertahankan, dan nilai dikonversi kembali ke tipe data karakter asli dan varchar saat diimpor secara massal ke kolom tabel.

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

Opsi Perintah untuk Unicode Native Format

Anda dapat mengimpor data format asli Unicode 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 asli Unicode didukung oleh opsi perintah berikut:

Perintah Opsi Deskripsi
bcp -N Menyebabkan utilitas bcp menggunakan format asli Unicode, yang menggunakan jenis data asli (database) untuk semua data noncharacter dan format data karakter Unicode untuk semua data karakter (karakter, nchar, varchar, nvarchar, teks, dan ntext).
BULK INSERT DATAFILETYPE ='widenative' Menggunakan format asli Unicode saat mengimpor data secara massal.
OPENROWSET T/A Harus menggunakan file format

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 myWidenative 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.myWidenative ( 
	PersonID smallint NOT NULL,
	FirstName nvarchar(25) NOT NULL,
	LastName nvarchar(30) NOT NULL,
	BirthDate date,
	AnnualSalary money
);

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

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

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, myWidenative.fmt, berdasarkan skema myWidenative. 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.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

REM Review file
Notepad D:\BCP\myWidenative.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 Format Asli bcp dan Unicode untuk Mengekspor Data

-N 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.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

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

Menggunakan Format Asli bcp dan Unicode untuk Mengimpor Data tanpa File Format

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

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

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

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

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

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

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

REM Review results is SSMS

Menggunakan BULK INSERT dan Unicode Native Format tanpa Format File

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

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

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

Menggunakan BULK INSERT dan Unicode Native Format dengan File Format Non-XML

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

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

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

Menggunakan OPENROWSET dan Unicode Native Format dengan File Format Non-XML

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

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

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

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)