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)
SQL analytics endpoint di Microsoft Fabric
Warehouse di Microsoft Fabric
Untuk bidang data karakter, penghentian karakter opsional memungkinkan Anda menandai akhir setiap bidang dalam file data dengan pemutus bidang dan akhir setiap baris dengan pemutus baris. Mengakhiri karakter adalah salah satu cara untuk menunjukkan ke program yang membaca file data di mana satu bidang atau baris berakhir dan bidang atau baris lain dimulai.
Important
Saat Anda menggunakan format asli atau Unicode asli, gunakan prefiks panjang alih-alih terminator bidang. Data dalam format asli dapat berbenturan dengan penghenti karena file data dalam format asli disimpan dalam format data biner internal Microsoft SQL Server.
Karakter yang didukung sebagai terminator
Perintah bcp, pernyataan, dan penyedia rowset massal BULK INSERT mendukung berbagai karakter sebagai terminator field atau baris dan selalu mencari terminator pertama dari masing-masingnya. Tabel berikut mencantumkan karakter yang didukung untuk terminator.
| Mengakhiri karakter | Ditunjukkan oleh | Description |
|---|---|---|
| Tab | \t |
Ini adalah terminator bidang bawaan. |
| Karakter Newline | \n |
Ini adalah pemisah baris default. |
| Pengembalian pengangkutan/umpan baris | \r |
|
| Garis miring terbelakang 1 | \ |
|
| Terminator nol (terminator yang tidak terlihat) 2 | \0 |
|
| Setiap karakter yang dapat dicetak (karakter kontrol tidak dapat dicetak, kecuali null, tab, newline, dan carriage return) | (*, A, t, l, dan sebagainya) |
|
| Rangkaian hingga 10 karakter yang dapat dicetak, termasuk beberapa atau semua terminator yang tercantum sebelumnya | (**\t**, end, !!!!!!!!!!, \t-\n, dan sebagainya) |
1 Hanya karakter t, n, r, 0, dan \0 yang bekerja dengan karakter escape garis miring terbalik, untuk menghasilkan karakter kontrol.
2 Meskipun karakter kontrol null (\0) tidak terlihat saat dicetak, ini adalah karakter yang berbeda dalam file data. Ini berarti bahwa menggunakan karakter kontrol null sebagai terminator bidang atau baris berbeda dengan tidak memiliki terminator bidang atau baris sama sekali.
Important
Jika karakter terminator muncul dalam data, karakter tersebut ditafsirkan sebagai terminator, bukan sebagai data, dan data setelah karakter tersebut ditafsirkan sebagai bagian dari kolom atau rekaman berikutnya. Oleh karena itu, pilih terminator Anda dengan hati-hati untuk memastikan bahwa mereka tidak pernah muncul dalam data Anda. Misalnya, terminator bidang pengganti rendah bukanlah pilihan yang baik untuk terminator bidang jika data berisi pengganti rendah tersebut.
Menggunakan terminator baris
Terminator baris dapat berupa karakter yang sama dengan terminator untuk kolom terakhir. Namun, umumnya, terminator baris yang berbeda berguna. Misalnya, untuk menghasilkan output tabular, hentikan bidang terakhir di setiap baris dengan karakter baris baru (\n) dan semua bidang lain dengan karakter tab (\t). Untuk menempatkan setiap rekaman data pada barisnya sendiri dalam file data, tentukan kombinasi \r\n sebagai terminator baris.
Note
Saat Anda menggunakan bcp secara interaktif dan menentukan \n (baris baru) sebagai terminator baris, bcp secara otomatis mengawalinya dengan karakter \r (pengembalian pengangkutan), yang menghasilkan terminator baris \r\n.
Tentukan terminator untuk ekspor massal
Saat Anda mengekspor data karakter atau nchar secara massal, dan ingin menggunakan terminator yang bukan standar, Anda harus menentukan terminator di perintah bcp. Anda dapat menentukan terminator dengan salah satu cara berikut:
Dengan file format yang menentukan terminator berdasarkan bidang demi bidang.
Note
Untuk informasi tentang cara menggunakan file format, lihat Memformat file untuk mengimpor atau mengekspor data (SQL Server).
Tanpa file format, alternatif berikut ada:
Gunakan sakelar
-tuntuk menentukan terminator bidang untuk semua bidang kecuali bidang terakhir di baris dan menggunakan sakelar-runtuk menentukan terminator baris.Gunakan sakelar format karakter (
-catau-w) tanpa sakelar-t, yang mengatur pemutus bidang ke karakter tab,\t. Ini sama dengan menentukan-t\t.Note
Jika Anda menentukan opsi
-n(data asli) atau-N(asli Unicode), pemutus tidak disisipkan.Jika perintah bcp interaktif berisi
inatauoutopsi tanpa sakelar file format (-f) atau sakelar format data (-n,-c,-w, atau-N), dan Anda memilih untuk tidak menentukan panjang awalan dan panjang bidang, perintah meminta terminator bidang setiap bidang, dengan nilai default tidak ada:Enter field terminator [none]:Umumnya, defaultnya adalah pilihan yang sesuai. Namun, untuk bidang data karakter atau nchar , lihat subbagian berikut, "Panduan untuk Menggunakan Terminator." Untuk contoh yang memperlihatkan perintah ini dalam konteks, lihat Menentukan format data kompatibilitas saat menggunakan bcp (SQL Server).
Note
Setelah Anda secara interaktif menentukan semua bidang dalam perintah bcp , perintah meminta Anda menyimpan respons untuk setiap bidang dalam file format non-XML. Untuk informasi selengkapnya tentang file format non-XML, lihat Menggunakan file format Non-XML (SQL Server).
Panduan untuk menggunakan terminator
Dalam beberapa situasi, penanda akhir berguna untuk bidang data jenis karakter atau nchar. Contohnya:
Untuk kolom data yang berisi nilai nol dalam file data yang akan diimpor ke dalam program yang tidak mengenal informasi tentang panjang awalan.
Kolom data apa pun yang berisi nilai null dianggap sebagai panjang variabel. Dengan tidak adanya panjang awalan, terminator diperlukan untuk mengidentifikasi akhir bidang null, memastikan bahwa data ditafsirkan dengan benar.
Untuk kolom panjang tetap yang ruangnya hanya sebagian digunakan oleh banyak baris.
Dalam situasi ini, menentukan terminator dapat menghemat ruang penyimpanan sehingga bidang dapat diperlakukan sebagai bidang dengan panjang variabel.
Tentukan \n sebagai terminator baris untuk ekspor massal
Saat Anda menentukan \n sebagai terminator baris untuk ekspor massal, atau secara implisit menggunakan terminator baris default, bcp menghasilkan kombinasi umpan baris kembali (CRLF) sebagai terminator baris. Jika Anda ingin menghasilkan karakter umpan baris saja (LF) sebagai terminator baris - seperti biasa pada komputer Unix dan Linux - gunakan notasi heksadesimal untuk menentukan terminator baris LF. Contohnya:
bcp -r '0x0A'
Examples
Contoh ini mengekspor data secara massal dari tabel AdventureWorks2022.HumanResources.Department ke file data Department-c-t.txt dengan format karakter, dengan koma sebagai pemisah bidang, dan karakter baris baru (\n) sebagai terminator baris.
Perintah bcp berisi sakelar berikut.
| Switch | Description |
|---|---|
-c |
Menentukan bahwa bidang data dimuat sebagai data karakter. |
-t , |
Menentukan koma (,) sebagai terminator bidang. |
-r \n |
Menentukan terminator baris sebagai karakter baris baru. Ini adalah terminator baris default, jadi menentukannya opsional. |
-T |
Menentukan bahwa utilitas bcp tersambung ke SQL Server dengan koneksi tepercaya menggunakan keamanan terintegrasi. Jika -T tidak ditentukan, Anda perlu menentukan -U dan -P untuk berhasil masuk. |
Untuk informasi selengkapnya, lihat Utilitas bcp.
Pada prompt perintah Microsoft Windows masukkan:
bcp AdventureWorks2022.HumanResources.Department out C:\myDepartment-c-t.txt -c -t, -r \n -T
Ini membuat Department-c-t.txt, yang berisi 16 rekaman dengan masing-masing empat bidang. Bidang dipisahkan oleh koma.
Tentukan pemisah untuk impor massal
Saat Anda mengimpor data karakter atau nchar secara massal, perintah impor massal harus mengenali terminator yang digunakan dalam file data. Bagaimana terminator dapat ditentukan tergantung pada perintah impor massal, sebagai berikut:
bcp
Menentukan terminator untuk operasi impor menggunakan sintaks yang sama seperti untuk operasi ekspor. Untuk informasi lebih lanjut, lihat Menentukan terminator untuk ekspor massal yang telah dibahas sebelumnya di artikel ini.
BULK INSERTTerminator dapat ditentukan untuk masing-masing bidang dalam file format, atau untuk seluruh file data, dengan menggunakan penentu yang ditampilkan dalam tabel berikut.
Qualifier Description FIELDTERMINATOR = '<field_terminator>'Menentukan pemisah bidang yang akan digunakan untuk file data karakter dan karakter Unicode.
Defaultnya adalah\t(karakter tab).ROWTERMINATOR = '<row_terminator>'Menentukan pengakhiran baris yang akan digunakan untuk file data karakter dan data karakter Unicode.
Standarnya adalah\n(karakter baris baru).Untuk informasi selengkapnya, lihat BULK INSERT.
INSERT ... SELECT * FROM OPENROWSET(BULK...)OPENROWSETUntuk penyedia himpunan baris massal, terminator hanya dapat ditentukan dalam file format (yang diperlukan kecuali untuk jenis data objek besar). Jika file data karakter menggunakan terminator non-default, file tersebut harus ditentukan dalam file format. Untuk informasi selengkapnya, lihat Membuat File Format (SQL Server) dan Menggunakan File Format untuk Mengimpor Data Massal (SQL Server).Untuk informasi selengkapnya tentang
OPENROWSET BULKklausa, lihat OPENROWSET (BULK).
Tentukan \n sebagai terminator baris untuk impor massal
Saat Anda menentukan \n sebagai terminator baris untuk impor massal, atau secara implisit menggunakan terminator baris default, bcp dan pernyataan BULK INSERT mengharapkan kombinasi carriage return-line feed (CRLF) sebagai terminator baris. Jika file sumber Anda hanya menggunakan karakter umpan baris (LF) sebagai terminator baris, seperti biasa dalam file yang dihasilkan pada komputer Unix dan Linux, gunakan notasi heksadesimal untuk menentukan terminator baris LF. Misalnya, dalam BULK INSERT pernyataan:
ROWTERMINATOR = '0x0A'
Examples
Contoh di bagian ini mengimpor data karakter secara massal dari file data yang Department-c-t.txt dibuat dalam contoh sebelumnya ke tabel myDepartment di database sampel AdventureWorks2025. Sebelum dapat menjalankan contoh, Anda harus membuat tabel ini. Untuk membuat tabel ini di dbo bawah skema, di Editor Kueri SQL Server Management Studio, jalankan kode berikut:
USE AdventureWorks2022;
GO
DROP TABLE myDepartment;
CREATE TABLE myDepartment
(
DepartmentID SMALLINT,
Name NVARCHAR (50),
GroupName NVARCHAR (50) NULL,
ModifiedDate DATETIME CONSTRAINT
DF_AddressType_ModifiedDate DEFAULT (GETDATE()) NOT NULL
);
GO
A. Gunakan bcp untuk menentukan terminator secara interaktif
Contoh berikut mengimpor file data secara massal Department-c-t.txt menggunakan bcp perintah . Perintah ini menggunakan sakelar perintah yang sama dengan perintah ekspor massal. Untuk informasi lebih lanjut, lihat Menentukan terminator untuk ekspor massal yang telah dibahas sebelumnya di artikel ini.
Pada prompt perintah Windows, ketik perintah berikut:
bcp AdventureWorks2022.dbo.myDepartment in C:\myDepartment-c-t.txt -c -t , -r \n -T
B. Menggunakan BULK INSERT untuk menentukan terminator secara interaktif
Contoh berikut mengimpor Department-c-t.txt file data secara massal menggunakan BULK INSERT pernyataan yang menggunakan kualifikasi yang diperlihatkan dalam tabel berikut.
| Option | Attribute |
|---|---|
DATAFILETYPE = 'char' |
Menentukan bahwa bidang data dimuat sebagai data karakter. |
FIELDTERMINATOR = ',' |
Menentukan koma (,) sebagai pemutus bidang. |
ROWTERMINATOR = '\n' |
Menentukan terminator baris sebagai karakter baris baru. |
Di SQL Server Management Studio Editor Kueri, jalankan kode berikut:
USE AdventureWorks2022;
GO
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO