Bagikan melalui


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

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (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 DBCS atau yang diperluas. Untuk data nonkarakter, format asli Unicode menggunakan tipe data bawaan (database). Untuk data karakter, seperti karakter, nchar, varchar, nvarchar, teks, 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 dan varchar aslinya saat diimpor secara massal ke dalam kolom tabel.

Opsi perintah untuk format asli unicode

Anda dapat mengimpor data format asli Unicode ke dalam tabel menggunakan bcp, BULK INSERT , atau OPENROWSET BULK.

  • Untuk perintah bcp atau pernyataan BULK INSERT , Anda dapat menentukan format data dalam pernyataan.
  • Untuk pernyataan OPENROWSET BULK , Anda harus menentukan format data dalam file format.

Format asli Unicode didukung oleh opsi perintah berikut:

Perintah Opsi Deskripsi
bcp -N Mengakibatkan bcp utilitas menggunakan format bawaan Unicode, yang menggunakan tipe data bawaan (database) untuk semua data non-karakter dan format data karakter Unicode untuk semua data karakter (char, nchar, varchar, nvarchar, text, dan ntext).
BULK INSERT DATAFILETYPE ='widenative' Menggunakan format asli Unicode saat mengimpor data secara massal.
OPENROWSET T/A Harus menggunakan file berbentuk 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 sampel myWidenative dan file format myWidenative.fmt. Ganti jalur file lokal dengan jalur file lokal pada sistem Anda.

Tabel contoh

Skrip berikut membuat database pengujian, tabel bernama myWidenative dan mengisi tabel dengan beberapa nilai awal. Jalankan Transact-SQL berikut:

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. Harap tinjau Gunakan 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.
  • c digunakan untuk menentukan data karakter
  • T digunakan untuk menentukan koneksi tepercaya menggunakan keamanan terintegrasi.

Di jendela command prompt, masukkan perintah-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 return\line feed pengangkutan. Jika tidak, Anda kemungkinan 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

Perintah sakelar -N dan OUT.

File data yang dibuat dalam contoh ini akan digunakan dalam semua contoh berikutnya.

Di jendela command prompt, masukkan perintah-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

Perintah sakelar -N dan IN.

Di jendela command prompt, masukkan perintah-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

Tombol -N, -f, dan perintah IN.

Di jendela command prompt, masukkan perintah-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

Gunakan BULK INSERT dan format asli Unicode tanpa file format

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;

Gunakan BULK INSERT dan format asli Unicode 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 format asli OPENROWSET dan Unicode 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: