Tentukan Terminator Bidang dan Baris (SQL Server)

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

Untuk bidang data karakter, karakter penghentian opsional memungkinkan Anda menandai akhir setiap bidang dalam file data dengan terminator bidang dan akhir setiap baris dengan terminator 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.

Penting

Saat Anda menggunakan format asli atau Unicode, gunakan awalan panjang daripada terminator bidang. Data format asli dapat bertentangan dengan terminator karena file data format asli disimpan dalam format data biner internal Microsoft SQL Server.

Karakter Didukung Sebagai Terminator

Perintah bcp , pernyataan BULK INSERT, dan penyedia set baris massal OPENROWSET mendukung berbagai karakter sebagai terminator bidang atau baris dan selalu mencari instans pertama dari setiap terminator. Tabel berikut mencantumkan karakter yang didukung untuk terminator.

Mengakhiri karakter Ditunjukkan oleh
Tab \t

Ini adalah terminator bidang default.
Karakter baris baru \n

Ini adalah terminator baris default.
Pengembalian pengangkutan/umpan baris \r
Backslash* \|
Terminator null (terminator yang tidak terlihat)** \0
Karakter apa pun yang dapat dicetak (karakter kontrol tidak dapat dicetak, kecuali null, tab, newline, dan carriage return) (*, A, t, l, dan sebagainya)
String hingga 10 karakter yang dapat dicetak, termasuk beberapa atau semua terminator yang tercantum sebelumnya (**\t**, akhir, !!!!!!!!!, \t-\n, dan sebagainya)

*Hanya karakter t, n, r, 0, dan '\0' yang berfungsi dengan karakter escape garis miring terbelakang untuk menghasilkan karakter kontrol.

**Meskipun karakter kontrol null (\0) tidak terlihat saat dicetak, karakter tersebut adalah karakter yang berbeda dalam file data. Ini berarti bahwa menggunakan karakter kontrol null sebagai terminator bidang atau baris berbeda dari tidak memiliki terminator bidang atau baris sama sekali.

Penting

Jika karakter terminator terjadi dalam data, karakter tersebut ditafsirkan sebagai terminator, bukan sebagai data, dan data setelah karakter tersebut ditafsirkan sebagai milik bidang 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 tidak akan menjadi pilihan yang baik untuk terminator bidang jika data berisi pengganti rendah tersebut.

Menggunakan Terminator Baris

Terminator baris bisa menjadi karakter yang sama dengan terminator untuk bidang 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.

Catatan

Saat Anda menggunakan bcp secara interaktif dan menentukan \n (baris baru) sebagai terminator baris, bcp secara otomatis mengawalinya dengan karakter \r (carriage return), yang menghasilkan terminator baris \r\n.

Tentukan Terminator untuk Ekspor Massal

Saat Anda mengekspor data karakter atau nchar secara massal, dan ingin menggunakan terminator non-default, Anda harus menentukan terminator ke perintah bcp . Anda dapat menentukan terminator dengan salah satu cara berikut:

  • Dengan file format yang menentukan terminator berdasarkan bidang demi bidang.

    Catatan

    Untuk informasi tentang cara menggunakan file format, lihat Format File untuk Mengimpor atau Mengekspor Data (SQL Server).

  • Tanpa file format, alternatif berikut ada:

    • Menggunakan tombol -t untuk menentukan terminator bidang untuk semua bidang kecuali bidang terakhir di baris dan menggunakan sakelar -r untuk menentukan terminator baris.

    • Menggunakan sakelar format karakter (-c atau -w) tanpa sakelar -t , yang mengatur terminator bidang ke karakter tab, \t. Ini sama dengan menentukan -t\t.

      Catatan

      Jika Anda menentukan sakelar -n (data asli) atau -N (asli Unicode), terminator tidak disisipkan.

    • Jika perintah bcp interaktif berisi opsi masuk atau keluar tanpa sakelar file format (-f) atau sakelar format data (-n, -c, -w, atau -N), dan Anda telah memilih untuk tidak menentukan panjang awalan dan panjang bidang, perintah meminta terminator bidang dari setiap bidang, dengan 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 untuk Kompatibilitas saat Menggunakan bcp (SQL Server).

      Catatan

      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 File Format Non-XML (SQL Server).

Panduan untuk Menggunakan Terminator

Dalam beberapa situasi, terminator berguna untuk bidang data karakter atau nchar . Contohnya:

  • Untuk kolom data yang berisi nilai null dalam file data yang akan diimpor ke dalam program yang tidak memahami informasi 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 panjang yang ruangnya hanya digunakan sebagian oleh banyak baris.

    Dalam situasi ini, menentukan terminator dapat meminimalkan ruang penyimpanan yang memungkinkan bidang diperlakukan sebagai bidang 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'

Contoh

Contoh ini secara massal mengekspor data dari AdventureWorks.HumanResources.Department tabel ke Department-c-t.txt file data menggunakan format karakter, dengan koma sebagai terminator bidang dan karakter baris baru (\n) sebagai terminator baris.

Perintah bcp berisi sakelar berikut.

Switch Deskripsi
-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 bersifat 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 agar berhasil masuk.

Untuk informasi selengkapnya, lihat Utilitas bcp.

Pada prompt perintah Microsoft Windows masukkan:

bcp AdventureWorks.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 Terminator 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 selengkapnya, lihat "Menentukan Terminator untuk Ekspor Massal", sebelumnya dalam topik ini.

  • SISIPAN MASSAL

    Terminator dapat ditentukan untuk bidang individual dalam file format atau untuk seluruh file data dengan menggunakan kualifikasi yang diperlihatkan dalam tabel berikut.

    Pengualifikasi Deskripsi
    FIELDTERMINATOR ='field_terminator' Menentukan terminator bidang yang akan digunakan untuk file data karakter dan karakter Unicode.

    Defaultnya adalah \t (karakter tab).
    ROWTERMINATOR ='row_terminator' Menentukan terminator baris yang akan digunakan untuk file data karakter dan karakter Unicode.

    Defaultnya adalah \n (karakter baris baru).

    Untuk informasi selengkapnya, lihat SISIPAN MASSAL (Transact-SQL).

  • MEMASUKKAN... PILIH * DARI OPENROWSET(MASSAL...)

    Untuk penyedia set baris massal OPENROWSET, 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 klausa OPENROWSET BULK, lihat OPENROWSET (Transact-SQL).

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 INSERT MASSAL mengharapkan kombinasi umpan kembali pengangkutan (CRLF) sebagai terminator baris. Jika file sumber Anda menggunakan karakter umpan baris saja (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 pernyataan INSERT MASSAL:

 ROWTERMINATOR = '0x0A'

Contoh

Contoh di bagian ini mengimpor data karakter secara massal membentuk file data yang Department-c-t.txt dibuat dalam contoh sebelumnya ke myDepartment dalam tabel dalam AdventureWorks2022 database sampel. Sebelum dapat menjalankan contoh, Anda harus membuat tabel ini. Untuk membuat tabel ini di bawah skema dbo , 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 not NULL CONSTRAINT DF_AddressType_ModifiedDate DEFAULT (GETDATE())
);
GO

J. 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 selengkapnya, lihat "Menentukan Terminator untuk Ekspor Massal", sebelumnya dalam topik ini.

Pada prompt perintah Windows masukkan:

bcp AdventureWorks2022..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.

Opsi Atribut
DATAFILETYPE ='char' Menentukan bahwa bidang data dimuat sebagai data karakter.
FIELDTERMINATOR =',' Menentukan koma (,) sebagai terminator bidang.
ROWTERMINATOR ='\n' Menentukan terminator baris sebagai karakter baris baru.

Di Editor Kueri SQL Server Management Studio, jalankan kode berikut:

USE AdventureWorks2022;
GO
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'
     WITH (
     DATAFILETYPE = 'char',
     FIELDTERMINATOR = ',',
     ROWTERMINATOR = '\n'
);
GO

Langkah berikutnya