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)
Format karakter Unicode direkomendasikan untuk transfer data secara massal antara beberapa instans SQL Server dengan menggunakan file data yang berisi karakter yang diperluas/DBCS. Format data karakter Unicode memungkinkan data diekspor dari server, dengan menggunakan halaman kode yang berbeda dari halaman kode yang digunakan oleh klien yang melakukan operasi. Dalam kasus seperti itu, penggunaan format karakter Unicode memiliki keuntungan berikut:
Jika data sumber dan tujuan adalah jenis data Unicode, gunakan format karakter Unicode mempertahankan semua data karakter.
Jika data sumber dan tujuan bukan jenis data Unicode, penggunaan format karakter Unicode meminimalkan hilangnya karakter yang diperluas dalam data sumber yang tidak dapat diwakili di tujuan.
Pertimbangan untuk Menggunakan format karakter Unicode
Saat menggunakan format karakter Unicode, pertimbangkan:
Secara bawaan, utilitas bcp memisahkan bidang data karakter dengan karakter tab dan mengakhiri catatan dengan karakter baris baru. Untuk informasi tentang cara menentukan terminator alternatif, lihat Menentukan terminator bidang dan baris (SQL Server).
Data sql_variant yang disimpan dalam file data format karakter Unicode beroperasi dengan cara yang sama seperti beroperasi dalam file data format karakter, kecuali bahwa data disimpan sebagai nchar alih-alih data karakter . Untuk informasi selengkapnya tentang format karakter, lihat Dukungan kolate dan Unicode.
Pertimbangan khusus untuk menggunakan format karakter Unicode, bcp, dan format berkas
File data format karakter Unicode mengikuti konvensi untuk file Unicode. Dua byte pertama file adalah angka heksadesimal, 0xFFFE. Byte ini berfungsi sebagai tanda urutan byte (BOM), menentukan apakah byte urutan tinggi disimpan terlebih dahulu atau terakhir dalam file. Utilitas bcp mungkin salah menafsirkan BOM dan menyebabkan bagian dari proses impor Anda gagal; Anda mungkin menerima pesan kesalahan yang mirip dengan berikut:
Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid character value for cast specification
BOM mungkin disalahartikan dalam kondisi berikut:
Utilitas bcp digunakan dan sakelar
-wdigunakan untuk menunjukkan karakter UnicodeSebuah file format digunakan
Bidang pertama dalam file data bukan karakter
Pertimbangkan apakah salah satu solusi berikut mungkin tersedia untuk situasi spesifik Anda:
Jangan gunakan file format. Contoh solusi ini disediakan dalam format menggunakan karakter bcp dan Unicode untuk Mengimpor Data tanpa file format,
Gunakan sakelar
-calih-alih-w,Mengekspor ulang data menggunakan format asli,
Gunakan BULK INSERT (Transact-SQL) atau OPENROWSET (Transact-SQL). Contoh solusi alternatif ini disediakan dalam bagian Menggunakan BULK INSERT dan format karakter Unicode dengan file format non-XML dan Menggunakan OPENROWSET dan format karakter Unicode dengan file format non-XML.
Sisipkan rekaman pertama secara manual dalam tabel tujuan lalu gunakan
-F 2sakelar agar impor dimulai pada rekaman kedua,Sisipkan rekaman dummy pertama secara manual dalam file data, lalu gunakan
-F 2switch agar impor dimulai pada rekaman kedua. Contoh solusi ini disediakan dalam bagian Menggunakan format karakter bcp dan Unicode untuk Mengimpor Data dengan file format non-XML ,Gunakan tabel penahapan di mana kolom pertama adalah tipe data karakter, atau
Ekspor ulang data dan ubah urutan bidang data sehingga bidang data pertama adalah karakter. Kemudian gunakan file format untuk memetakan ulang bidang data ke urutan aktual dalam tabel. Misalnya, lihat Menggunakan file format untuk memetakan kolom tabel ke bidang file data (SQL Server).
Opsi perintah untuk format karakter Unicode
Anda dapat mengimpor data format karakter Unicode ke dalam tabel menggunakan bcp, BULK INSERT, atau OPENROWSET. Untuk perintah bcp atau pernyataan BULK INSERT , Anda dapat menentukan format data dalam pernyataan. Untuk pernyataan OPENROWSET , Anda harus menentukan format data dalam file format.
Format karakter Unicode didukung oleh opsi perintah berikut:
| Perintah | Opsi | Deskripsi |
|---|---|---|
bcp |
-w |
Menggunakan format karakter Unicode. |
BULK INSERT |
DATAFILETYPE ='widechar' |
Menggunakan format karakter Unicode saat mengimpor data secara massal. |
OPENROWSET |
Tidak Berlaku | 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 artikel ini didasarkan pada tabel dan file format berikut.
Tabel contoh
Skrip berikut membuat database pengujian, tabel bernama myWidechar 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.myWidechar
(
PersonID SMALLINT NOT NULL,
FirstName NVARCHAR (25) NOT NULL,
LastName NVARCHAR (30) NOT NULL,
BirthDate DATE,
AnnualSalary MONEY
);
-- Populate table
INSERT TestDatabase.dbo.myWidechar
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.myWidechar;
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. Untuk informasi selengkapnya, lihat Menggunakan file format non-XML (SQL Server).
Perintah berikut menggunakan utilitas bcp untuk menghasilkan file format non-XML, myWidechar.fmt, berdasarkan skema myWidechar. 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, c digunakan untuk menentukan data karakter, dan T digunakan untuk menentukan koneksi tepercaya menggunakan integrasi keamanan. Pada prompt perintah, masukkan perintah berikut:
bcp TestDatabase.dbo.myWidechar format nul -f D:\BCP\myWidechar.fmt -T -w
REM Review file
Notepad D:\BCP\myWidechar.fmt
Penting
File format non-XML Anda harus diakhiri dengan tanda ganti baris. Jika tidak, Anda mungkin 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 berikut menggunakan database, dan memformat file yang dibuat sebelumnya.
Menggunakan format karakter bcp dan Unicode untuk Mengekspor Data
-w sakelar dan perintah OUT. File data yang dibuat dalam contoh ini digunakan dalam semua contoh berikutnya. Pada prompt perintah, masukkan perintah berikut:
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w
REM Review results
NOTEPAD D:\BCP\myWidechar.bcp
Menggunakan format karakter bcp dan Unicode untuk Mengimpor Data tanpa file format
-w sakelar dan perintah IN. Pada prompt perintah, masukkan perintah berikut:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidechar;"
REM Import data
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -T -w
REM Review results is SSMS
Menggunakan format karakter bcp dan Unicode untuk Mengimpor Data dengan file format non-XML
-w dan -f sakelar serta IN perintah. Solusi perlu digunakan karena contoh ini melibatkan bcp, file format, karakter Unicode, dan bidang data pertama dalam file data adalah non-karakter. Lihat Pertimbangan Khusus untuk Menggunakan format karakter Unicode, bcp, dan file format sebelumnya di artikel. File data myWidechar.bcp diubah dengan menambahkan rekaman tambahan sebagai rekaman "dummy" yang kemudian dilewati menggunakan sakelar -F 2.
Pada prompt perintah, masukkan perintah berikut dan ikuti langkah-langkah modifikasi:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidechar;"
REM Open data file
Notepad D:\BCP\myWidechar.bcp
REM Copy first record and then paste as new first record. This additional record is the "dummy" record.
REM Close file.
REM Import data instructing bcp to skip dummy record with the -F 2 switch.
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -f D:\BCP\myWidechar.fmt -T -F 2
REM Review results is SSMS
REM Return data file to original state for usage in other examples
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w
Gunakan BULK INSERT dan format karakter Unicode tanpa file format
DATAFILETYPE Argumen. Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar FROM 'D:\BCP\myWidechar.bcp'
WITH (DATAFILETYPE = 'widechar');
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
Gunakan BULK INSERT dan format karakter Unicode dengan file format non-XML
FORMATFILE Argumen. Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar FROM 'D:\BCP\myWidechar.bcp'
WITH (FORMATFILE = 'D:\BCP\myWidechar.fmt');
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
Gunakan OPENROWSET dan format karakter Unicode dengan file format non-XML
FORMATFILE Argumen. Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myWidechar; -- for testing
INSERT INTO TestDatabase.dbo.myWidechar
SELECT * FROM OPENROWSET (
BULK 'D:\BCP\myWidechar.bcp',
FORMATFILE = 'D:\BCP\myWidechar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myWidechar;
Tugas terkait
Untuk menggunakan format data untuk impor massal atau ekspor massal
- Mengimpor data format asli dan karakter dari versi SQL Server yang lebih lama
- Menggunakan format karakter untuk mengimpor atau mengekspor data (SQL Server)
- Menggunakan format asli untuk mengimpor atau mengekspor data (SQL Server)
- Menggunakan format asli Unicode untuk mengimpor atau mengekspor Data (SQL Server)