bcp kullanarak alan uzunluğunu belirtme (SQL Server)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

Alan uzunluğu, verileri karakter biçiminde göstermek için gereken en fazla karakter sayısını gösterir. Verilerin yerel biçimde depolandığında alan uzunluğu zaten bilinir; örneğin, int veri türü 4 bayt alır. Ön ek uzunluğu için 0 belirttiyseniz , bcp komutu sizden alan uzunluğu, varsayılan alan uzunlukları ve char verileri içeren veri dosyalarında alan uzunluğunun veri depolama üzerindeki etkisini ister.

Alan uzunluğu için bcp istemi

Etkileşimli bcp komutu, format dosyası anahtarı (in) veya veri biçimi anahtarı (out, -f, -n, -c) olmadan -w veya -N seçeneklerini içeriyorsa, komut her veri alanının alan uzunluğunu aşağıdaki gibi ister:

Enter length of field <field_name> [<default>]:

Bu istemi bağlamda gösteren bir örnek için bkz. Bcp Kullanırken Uyumluluk için Veri Biçimlerini Belirtme (SQL Server).

Uyarı

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ı (SQL Server).

Bcp komutunun alan uzunluğu isteyip istemediği aşağıdaki gibi çeşitli faktörlere bağlıdır:

  • Sabit uzunlukta olmayan veri türlerini kopyalarken ve ön ek uzunluğunu 0 olarak belirlediğinizde, bcp sizden alan uzunluğunu girmenizi ister.

  • Karakter olmayan verileri karakter verilerine dönüştürürken bcp , verileri depolamak için yeterince büyük bir varsayılan alan uzunluğu önerir.

  • Dosya depolama türü karakter dışıysa bcp komutu alan uzunluğu istemez. Veriler Microsoft SQL Server yerel veri gösteriminde (yerel biçim) depolanır.

Varsayılan alan uzunluklarını kullan

Genellikle Microsoft, alan uzunluğu için bcp tarafından önerilen varsayılan değerleri kabul etmenizi önerir. Karakter modu veri dosyası oluşturulduğunda, varsayılan alan uzunluğunun kullanılması verilerin kesilmemesini ve sayısal taşma hatalarının oluşmamasını sağlar.

Yanlış bir alan uzunluğu belirtirseniz, sorunlar oluşabilir. Örneğin, sayısal verileri kopyalarken ve veriler için çok kısa bir alan uzunluğu belirttiğinizde, bcp yardımcı programı bir taşma mesajı yazdırır ve verileri kopyalamaz. Ayrıca , tarih saat verilerini dışarı aktarır ve karakter dizesi için 26 bayttan az bir alan uzunluğu belirtirseniz , bcp yardımcı programı verileri hata iletisi olmadan kısaltır.

Önemli

Varsayılan boyut seçeneği kullanıldığında, SQL Server bir dizenin tamamını okumayı bekler. Bazı durumlarda, varsayılan alan uzunluğunun kullanılması "beklenmeyen dosya sonu" hatasına neden olabilir. Genellikle bu hata, veri dosyasında beklenen alanın yalnızca bir bölümü oluştuğunda para ve tarih saat veri türlerinde oluşur; örneğin, saat bileşeni olmadan mm//tarih saat değeri belirtildiğinde ve bu nedenle karakter biçiminde birtarih saat değerinin beklenen 24 karakter uzunluğundan daha kısa olduğunda. Bu tür bir hatayı önlemek için alan sonlandırıcıları veya sabit uzunlukta veri alanlarını kullanın veya başka bir değer belirterek varsayılan alan uzunluğunu değiştirin.

Karakter dosyası depolama için varsayılan alan uzunlukları

Aşağıdaki tabloda, verilerin karakter dosyası depolama türü olarak depolanması için varsayılan alan uzunlukları listelanmaktadır. Boş değer atanabilir veriler, boş değer alamayan veri ile aynı uzunluktadır.

Veri türü Varsayılan uzunluk (karakterler)
char Sütun için tanımlanan uzunluk
varchar Sütun için tanımlanan uzunluk
nchar Sütun için tanımlanan uzunluğun iki katı
nvarchar Sütun için tanımlanan uzunluğun iki katı
Metin 0
ntext 0
bit 1
binary Sütun için tanımlanan uzunluğun iki katı + 1
varbinary Sütun için tanımlanan uzunluğun iki katı + 1
image 0
datetime yirmi dört
smalldatetime yirmi dört
float 30
Gerçek 30
int 12
bigint 19
smallint 7
tinyint 5
para 30
küçük para 30
decimal 41 1
Sayısal 41 1
uniqueidentifier 37
zaman etiketi 17
varchar(max) 0
varbinary(maks) 0
nvarchar(max) 0
UDT Kullanıcı tanımlı terim (UDT) sütununun uzunluğu
XML 0
vector Geçerli Değil 2

1Ondalık ve sayısal veri türleri hakkında daha fazla bilgi için bkz. Ondalık ve sayısal (Transact-SQL).

2Vektör veri türünün karaktere ve karakterden dönüştürülmesine izin verilmez.

Uyarı

tinyint türünde bir sütun 0 ile 255 arasında değerlere sahip olabilir; bu aralıktaki herhangi bir sayıyı temsil etmek için gereken karakter sayısı üst sınırı üçdür (100 ile 255 arasındaki değerleri temsil eder).

Yerel dosya depolama için varsayılan alan uzunlukları

Aşağıdaki tabloda yerel dosya depolama türü olarak depolanacak verilerin varsayılan alan uzunlukları listelanmaktadır. Boş değer atanabilir veriler, null olmayan verilerle aynı uzunluktadır ve karakter verileri her zaman karakter biçiminde saklanır.

Veri türü Varsayılan uzunluk (karakterler)
bit 1
binary Sütun için tanımlanan uzunluk
varbinary Sütun için tanımlanan uzunluk
image 0
datetime 8
smalldatetime 4
float 8
Gerçek 4
int 4
bigint 8
smallint 2
tinyint 1
para 8
küçük para 4
decimal 1
Sayısal 1
uniqueidentifier 16
zaman etiketi 8
vector 8 baytlık vektör üst bilgisi + kayan dizi boyutu

1Ondalık ve sayısal veri türleri hakkında daha fazla bilgi için bkz. ondalık ve sayısal (Transact-SQL).

Önceki tüm durumlarda, daha sonra SQL Server'a yeniden yüklenip depolama alanını en düşük düzeyde tutan bir veri dosyası oluşturmak için, varsayılan dosya depolama türü ve varsayılan alan uzunluğuna sahip bir uzunluk ön eki kullanın.