Aracılığıyla paylaş


Alan ve satır sonlandırıcılarını belirtme (SQL Server)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft FabricWarehouse'da SQL analiz uç noktası

Karakter veri alanları için isteğe bağlı sonlandırma karakterleri, veri dosyasındaki her alanın sonunu alan sonlandırıcı ve her satırın sonunu satır sonlandırıcısı ile işaretlemenize olanak sağlar. Karakterleri sonlandırmak, bir alanın veya satırın sona erdiği ve başka bir alanın veya satırın başladığı veri dosyasını okuyan programlara göstermenin bir yoludur.

Important

Özgün veya Unicode özgün biçimi kullandığınızda, alan sonlandırıcıları yerine uzunluk öneklerini kullanın. Yerel biçimli bir veri dosyası Microsoft SQL Server iç ikili veri biçiminde depolandığından yerel biçim verileri sonlandırıcılarla çakışabilir.

Sonlandırıcı olarak desteklenen karakterler

bcp komutu, BULK INSERT deyimi ve OPENROWSET toplu satır kümesi sağlayıcısı, alan veya satır sonlandırıcıları olarak çeşitli karakterleri destekler ve her zaman her sonlandırıcının ilk örneğini arar. Sonlandırıcılar için desteklenen karakterler aşağıdaki tabloda listelenmiştir.

Sonlandırıcı karakter Tarafından belirtilen Description
Tab \t Bu, varsayılan alan sonlandırıcısıdır.
Yeni satır karakteri \n Bu, varsayılan satır sonlandırıcısıdır.
Satır başı dönüşü/satır beslemesi \r
Ters eğik çizgi 1 \
Null sonlandırıcı (görünür olmayan sonlandırıcı) 2 \0
Yazdırılabilir karakterler (denetim karakterleri null, sekme, yeni satır ve satır başı dışında yazdırılamaz) (*, A, t, lvb.)
Daha önce listelenen sonlandırıcıların bazıları veya tümü dahil olmak üzere en çok 10 yazdırılabilir karakterden oluşan dize (**\t**, end, !!!!!!!!!!, \t-\nvb.)

1 Yalnızca t, n, r, 0 ve \0 karakterleri, bir denetim karakteri oluşturmak için ters eğik çizgi kaçış karakteriyle çalışır.

2 Null denetim karakteri (\0) yazdırıldığında görünür olmasa da, veri dosyasında ayrı bir karakterdir. Bu, null denetim karakterini alan veya satır sonlandırıcı olarak kullanmanın hiçbir alan veya satır sonlandırıcısı olmamasından farklı olduğu anlamına gelir.

Important

Verilerin içinde bir sonlandırıcı karakteri oluşursa, karakter veri olarak değil sonlandırıcı olarak yorumlanır ve bu karakterden sonraki veriler bir sonraki alana veya kayda ait olarak yorumlanır. Bu nedenle, verilerinizde hiç görünmemelerini sağlamak için sonlandırıcılarınızı dikkatlice seçin. Örneğin, düşük vekil alan sonlandırıcısı, veriler bu düşük vekili içeriyorsa alan sonlandırıcısı için iyi bir seçim değildir.

Satır sonlandırıcılarını kullanma

Satır sonlandırıcısı, son alanın sonlandırıcısı ile aynı karakter olabilir. Ancak genellikle farklı bir satır sonlandırıcısı kullanışlıdır. Örneğin, tablosal çıkış üretmek için, her satırdaki son alanı yeni satır karakteriyle () ve sekme karakteriyle (\n\t) diğer tüm alanları sonlandırın. Her veri kaydını veri dosyasında kendi satırına yerleştirmek için, birleşimi \r\n satır sonlandırıcısı olarak belirtin.

Note

bcp'yi etkileşimli olarak kullandığınızda ve satır sonlandırıcı olarak \n (yeni satır) belirttiğinizde, bcp bunu otomatik olarak bir \r (satır başı dönüşü) karakteriyle önekler, bu da bir satır sonlandırıcı \r\n ile sonuçlanır.

Toplu dışarı aktarma için sonlandırıcıları belirtin

char veya nchar verilerini toplu dışarı aktardığınızda ve varsayılan olmayan bir ayraç kullanmak istediğinizde, bcp komutuna ayracı belirtmeniz gerekir. Sonlandırıcıları aşağıdaki yollardan herhangi biriyle belirtebilirsiniz:

  • Her bir alan için sonlandırıcıyı belirten bir biçim dosyasıyla.

    Note

    Biçim dosyalarını kullanma hakkında bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).

  • Biçim dosyası olmadan aşağıdaki alternatifler vardır:

    • Satırdaki son alan dışındaki tüm alanlar için alan sonlandırıcısını belirtmek üzere -t anahtarını kullanın ve bir satır sonlandırıcı belirtmek için -r anahtarını kullanarak devam edin.

    • -c anahtarı olmadan, alan sonlandırıcısını sekme karakteri -w olarak ayarlayan bir karakter biçimi anahtarı (-t veya \t) kullanın. Bu, belirtilmesiyle -t\t aynıdır.

      Note

      -n (yerel veriler) veya -N (Unicode yerel) anahtarlarını belirtirseniz sonlandırıcılar eklenmez.

    • Etkileşimli bcp komutu, format dosyası anahtarını (in) veya veri-biçimi anahtarlarından birini (out, -f, -n veya -c) içermeden -w veya -N seçeneğini içeriyorsa ve ön ek uzunluğunu ve alan uzunluğunu belirtmemeyi seçerseniz, komut her alan için alan sonlandırıcısını sorar. Varsayılan olarak, alan sonlandırıcısı yoktur.

      Enter field terminator [none]:

      Genel olarak, varsayılan uygun bir seçimdir. Ancak , char veya nchar veri alanları için aşağıdaki "Sonlandırıcıları Kullanma Yönergeleri" alt bölümüne bakın. Bu istemi bağlamda gösteren bir örnek için bkz. bcp (SQL Server) kullanırken uyumluluk veri biçimlerini belirtme.

      Note

      bcp komutundaki tüm alanları etkileşimli olarak belirttikten sonra komut, her alan için yanıtlarınızı XML olmayan bir biçim dosyasına kaydetmenizi ister. XML olmayan biçim dosyaları hakkında daha fazla bilgi için bkz. XML dışı biçim dosyalarını (SQL Server) kullanma.

Sonlandırıcıları kullanma yönergeleri

Bazı durumlarda, sonlandırıcı karakter veya nchar veri alanı için yararlıdır. Örneğin:

  • Ön ek uzunluğu bilgilerini anlamayan bir programa aktarılacak bir veri dosyasında null değer içeren bir veri sütunu için.

    Null değer içeren herhangi bir veri sütunu değişken uzunluk olarak kabul edilir. Ön ek uzunluklarının olmaması halinde, verilerin doğru yorumlandığından emin olmak için null alanın sonunu tanımlamak için bir sonlandırıcı gerekir.

  • Alanı çok sayıda satır tarafından yalnızca kısmen kullanılan uzun, sabit uzunlukta bir sütun için.

    Bu durumda, bir sonlandırıcı belirtmek depolama alanını en aza indirerek alanın değişken uzunlukta bir alan olarak değerlendirilmesini sağlayabilir.

Toplu dışa aktarma için \n'yi satır sonlandırıcı olarak belirtin.

Toplu dışarı aktarma için satır sonlandırıcı olarak \n'u belirttiğinizde veya varsayılan satır sonlandırıcısını örtük olarak kullandığınızda, bcp satır sonlandırıcısı olarak bir satır başı-satır besleme (CRLF) kombinasyonu verir. Unix ve Linux bilgisayarlarda olduğu gibi satır sonlandırıcısı olarak yalnızca satır besleme karakteri (LF) çıkarmak istiyorsanız, LF satır sonlandırıcısını belirtmek için onaltılık gösterim kullanın. Örneğin:

bcp -r '0x0A'

Examples

Bu örnek, AdventureWorks2022.HumanResources.Department tablosundaki verileri, alan sonlandırıcısı olarak virgül ve satır sonlandırıcısı olarak yeni satır karakteri (\n) ile karakter biçimini kullanarak Department-c-t.txt veri dosyasına toplu olarak dışarı aktarır.

bcp komutu aşağıdaki seçenekleri içerir.

Switch Description
-c Veri alanlarının karakter verileri olarak yüklendiğini belirtir.
-t , Virgülü (,) alan sonlandırıcı olarak belirtir.
-r \n Satır sonlandırıcısını yeni satır karakteri olarak belirtir. Bu varsayılan satır sonlandırıcısıdır, bu nedenle isteğe bağlı olarak belirtilir.
-T bcp yardımcı programının tümleşik güvenlik kullanarak güvenilir bir bağlantıyla SQL Server'a bağlandığını belirtir. Eğer -T belirtilmezse, -U ve -P belirtmeniz gerekir ki başarıyla oturum açabilirsiniz.

Daha fazla bilgi için bkz. bcp Yardımcı Programı.

Microsoft Windows komut istemine şunu girin:

bcp AdventureWorks2022.HumanResources.Department out C:\myDepartment-c-t.txt -c -t, -r \n -T

Bu, her birinde dört alan bulunan 16 kayıt içeren Department-c-t.txtoluşturur. Alanlar virgülle ayrılır.

Toplu içeri aktarma için sonlandırıcıları belirtme

char veya nchar verilerini toplu içeri aktardığınızda, toplu içeri aktarma komutunun veri dosyasında kullanılan sonlandırıcıları tanıması gerekir. Sonlandırıcıların nasıl belirtilebileceği, toplu içeri aktarma komutuna bağlıdır:

  • bcp

    İçeri aktarma işlemi için sonlandırıcıların belirtilmesi, dışarı aktarma işlemiyle aynı söz dizimini kullanır. Daha fazla bilgi için, bu makalenin önceki bölümlerinde yer alan Toplu dışarı aktarma için sonlandırıcıları belirtme bölümüne bakın.

  • BULK INSERT

    Sonlandırıcılar, aşağıdaki tabloda gösterilen niteleyiciler kullanılarak bir biçim dosyasındaki tek tek alanlar için veya veri dosyasının tamamı için belirtilebilir.

    Qualifier Description
    FIELDTERMINATOR = '<field_terminator>' Karakter ve Unicode karakter veri dosyaları için kullanılacak alan sonlandırıcısını belirtir.

    Varsayılan değer \t (sekme karakteri) değeridir.
    ROWTERMINATOR = '<row_terminator>' Karakter ve Unicode karakter veri dosyaları için kullanılacak satır sonlandırıcısını belirtir.

    Varsayılan değer \n (yeni satır karakteri).

    Daha fazla bilgi için bkz. BULK INSERT.

  • INSERT ... SELECT * FROM OPENROWSET(BULK...)

    OPENROWSET Toplu satır kümesi sağlayıcısı için sonlandırıcılar yalnızca biçim dosyasında belirtilebilir (büyük nesne veri türleri dışında gereklidir). Karakter veri dosyası varsayılan olmayan bir sonlandırıcı kullanıyorsa, biçim dosyasında tanımlanmalıdır. Daha fazla bilgi için bkz. Biçim Dosyası Oluşturma (SQL Server) ve Verileri Toplu İçeri Aktarmak için Biçim Dosyası Kullanma (SQL Server).

    OPENROWSET BULK maddesi hakkında daha fazla bilgi için bkz. OPENROWSET (BULK).

Toplu içeri aktarma için \n'yi satır sonlandırıcı olarak belirtin.

Toplu içeri aktarma için satır sonlandırıcı olarak \n belirttiğinizde veya varsayılan satır sonlandırıcısını örtük olarak kullandığınızda, bcp ve BULK INSERT deyimi, satır sonlandırıcısı olarak satırbaşı-satırsonu kombinasyonu (CRLF) bekler. Kaynak dosyanız, Unix ve Linux bilgisayarlarda oluşturulan dosyalarda olduğu gibi satır sonlandırıcısı olarak yalnızca satır akışı karakteri (LF) kullanıyorsa, LF satır sonlandırıcısını belirtmek için onaltılık gösterim kullanın. Örneğin, bir BULK INSERT deyimde:

ROWTERMINATOR = '0x0A'

Examples

Bu bölümdeki örnekler, önceki örnekte oluşturulan Department-c-t.txt veri dosyasındaki karakter verilerini, myDepartment örnek veritabanındaki AdventureWorks2025 tablosuna toplu olarak içeri aktarır. Örnekleri çalıştırabilmeniz için önce bu tabloyu oluşturmanız gerekir. Şema altında dbo bu tabloyu oluşturmak için SQL Server Management Studio Sorgu Düzenleyicisi'nde aşağıdaki kodu yürütür:

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. Terminatörleri etkileşimli olarak belirtmek için bcp kullanma

Aşağıdaki örnek, Department-c-t.txt komutunu kullanarak bcp veri dosyasını toplu olarak içeri aktarır. Bu komut, toplu dışarı aktarma komutuyla aynı komut anahtarlarını kullanır. Daha fazla bilgi için, bu makalenin önceki bölümlerinde yer alan Toplu dışarı aktarma için sonlandırıcıları belirtme bölümüne bakın.

Windows komut isteminde aşağıdaki komutu yazın:

bcp AdventureWorks2022.dbo.myDepartment in C:\myDepartment-c-t.txt -c -t , -r \n -T

B. Terminatörleri etkileşimli olarak belirtmek için BULK INSERT kullanma

Aşağıdaki örnek, aşağıdaki tabloda gösterilen niteleyicileri kullanan bir Department-c-t.txt deyimi kullanarak BULK INSERT veri dosyasını toplu olarak içeri aktarır.

Option Attribute
DATAFILETYPE = 'char' Veri alanlarının karakter verileri olarak yüklendiğini belirtir.
FIELDTERMINATOR = ',' Alan sonlandırıcısı olarak virgül (,) belirtir.
ROWTERMINATOR = '\n' Satır sonlandırıcısını yeni satır karakteri olarak belirtir.

SQL Server Management Studio Sorgu Düzenleyicisi'nde aşağıdaki kodu yürütür:

USE AdventureWorks2022;
GO

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