Aracılığıyla paylaş


XML biçim dosyaları (SQL Server)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrnekAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)

SQL Server, verileri bir SQL Server tablosuna toplu içeri aktarmak için kullanılacak XML biçim dosyaları yazmaya yönelik söz dizimlerini tanımlayan bir XML şeması sağlar. XML biçim dosyaları, XML Şema Tanım Dili'nde (XSDL) tanımlanan bu şemaya uymalıdır. XML biçim dosyaları yalnızca SQL Server araçları SQL Server Yerel İstemcisi ile birlikte yüklendiğinde desteklenir.

XML biçim dosyası, bcp komutu, BULK INSERT deyimi veya INSERT ... SELECT * FROM OPENROWSET(BULK...) deyimiyle kullanılabilir. bcp komutu, bir tablo için otomatik olarak XML biçim dosyası oluşturmanıza olanak tanır; daha fazla bilgi için bkz. bcp yardımcı programı.

Toplu dışarı ve içeri aktarma için iki tür biçim dosyası desteklenir: XML olmayan biçim dosyalarını ve XML biçim dosyalarını . XML biçim dosyaları, XML olmayan biçim dosyalarına esnek ve güçlü bir alternatif sağlar. XML olmayan biçim dosyaları hakkında bilgi için bkz. XML dışı biçim dosyalarını kullanma (SQL Server).

Not

Toplu ekleme de dahil olmak üzere bu söz dizimi Azure Synapse Analytics'te desteklenmez. Azure Synapse Analytics ve diğer bulut veritabanı platformu tümleştirmelerinde, Azure Data Factory 'da COPY deyiminiveya COPY INTO ve PolyBase gibiT-SQL deyimlerini kullanarak veri taşımayı gerçekleştirin.

XML biçim dosyalarının avantajları

XML biçim dosyaları kendi kendine açıklayıcıdır ve kolay okunmasını, oluşturulmasını ve genişletılmasını sağlar. Bunlar insan tarafından okunabilir olduğundan, toplu işlemler sırasında verilerin nasıl yorumlandığı kolayca anlaşılır.

XML biçim dosyaları, hedef sütunların veri türlerini içerir. XML kodlaması, veri dosyasının veri türlerini ve veri öğelerini ve veri öğeleri ile tablo sütunları arasındaki eşlemeyi açıkça açıklar.

Bu, verilerin veri dosyasında nasıl temsil edilir ve dosyadaki her alanla ilişkili veri türü arasında ayrım sağlar. Örneğin, bir veri dosyası verilerin karakter gösterimini içeriyorsa, ilgili SQL sütun türü kaybolur.

XML biçim dosyası, bir veri dosyasından tek bir büyük nesne (LOB) veri türü içeren bir alanın yüklenmesini sağlar.

XML biçim dosyası geliştirilebilir ancak önceki sürümleriyle uyumlu kalır. Ayrıca XML kodlamasının netliği, belirli bir veri dosyası için birden çok biçimli dosya oluşturulmasını kolaylaştırır. Bu, veri alanlarının tümünü veya bir kısmını farklı tablo veya görünümlerdeki sütunlarla eşlemeniz gerekiyorsa kullanışlıdır.

XML söz dizimi, işlemin yönünden bağımsızdır; diğer bir ifadeyle, toplu dışarı aktarma ve toplu içeri aktarma için söz dizimi aynıdır.

Verileri tablolara veya bölümlenmemiş görünümlere toplu olarak içeri aktarmak ve verileri toplu dışarı aktarmak için XML biçim dosyalarını kullanabilirsiniz.

hedef tablo belirtme OPENROWSET(BULK...) işlevi için isteğe bağlıdır. Bunun nedeni, işlevin veri dosyasındaki verileri okumak için XML biçim dosyasına bağımlı olmasıdır.

Not

Hedef tablo, tür dönüştürmeyi yapmak için hedef tablo sütunlarını kullanan deyimi ve BULK INSERT komutu ile gereklidir.

XML biçim dosyalarının yapısı

XML olmayan bir biçim dosyası gibi, XML biçim dosyası da bir veri dosyasındaki veri alanlarının biçimini ve yapısını tanımlar ve bu veri alanlarını tek bir hedef tablodaki sütunlara eşler.

XML biçim dosyası, <RECORD> ve <ROW>olmak üzere iki ana bileşene sahiptir:

  • <RECORD>, verileri veri dosyasında depolandığı şekilde açıklar.

    Her <RECORD> öğesi bir veya daha fazla <FIELD> öğesi içerir. Bu öğeler veri dosyasındaki alanlara karşılık gelir. Temel söz dizimi aşağıdaki gibidir:

    <RECORD>
        <FIELD .../> [ ...n ]
    </RECORD>
    

    Her <FIELD> öğesi belirli bir veri alanının içeriğini açıklar. Bir alan, tablodaki yalnızca bir sütuna eşlenebilir. Tüm alanların sütunlara eşlenmesi gerekmez.

    Veri dosyasındaki bir alan sabit/değişken uzunluğunda olabilir veya karakter sonlandırılabilir. alan değeri şu şekilde temsil edilebilir: karakter (tek baytlı gösterim kullanılarak), geniş bir karakter (Unicode 2 bayt gösterimi kullanılarak), yerel veritabanı biçimi veya dosya adı. Alan değeri dosya adı olarak gösteriliyorsa, dosya adı hedef tablodaki BLOB sütununun değerini içeren dosyayı gösterir.

  • <ROW>, dosyadaki veriler bir SQL Server tablosuna aktarıldığında veri dosyasından veri satırları oluşturmayı açıklar.

    <ROW> öğesi bir dizi <COLUMN> öğesi içerir. Bu öğeler tablo sütunlarına karşılık gelir. Temel söz dizimi aşağıdaki gibidir:

    <ROW>
        <COLUMN .../> [ ...n ]
    </ROW>
    

    Her <COLUMN> öğesi, veri dosyasındaki yalnızca bir alana eşlenebilir. <COLUMN> öğesindeki <ROW> öğelerinin sırası, toplu işlemin bunları döndürme sırasını tanımlar. XML biçim dosyası, her <COLUMN> öğesine toplu içeri aktarma işleminin hedef tablosundaki sütunla ilişkisi olmayan bir yerel ad atar.

XML biçim dosyaları için şema söz dizimi

Bu bölüm, XML biçim dosyaları için XML şemasının öğelerinin ve özniteliklerinin özetini içerir. Biçim dosyasının söz dizimi işlemin yönünden bağımsızdır; diğer bir ifadeyle, toplu dışarı aktarma ve toplu içeri aktarma için söz dizimi aynıdır. Bu bölümde ayrıca toplu içeri aktarmanın <ROW> ve <COLUMN> öğelerini nasıl kullandığı ve bir öğenin xsi:type değerini bir veri kümesine nasıl yerleştirdiği de ele alınıyor.

Söz diziminin gerçek XML biçim dosyalarına nasıl karşılık olduğunu görmek için bkz. örnek XML biçim dosyaları.

Not

Bir biçim dosyasını, alanların sayısının ve/veya sırasının tablo sütunlarının sayısından ve/veya sırasından farklı olduğu bir veri dosyasından toplu içeri aktarmanıza olanak verecek şekilde değiştirebilirsiniz. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).

XML şemasının temel söz dizimi

Bu söz dizimi deyimleri yalnızca öğeleri (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>ve <COLUMN>) ve bunların temel özniteliklerini gösterir.

Not

bir xsi:type veya <FIELD> öğesindeki <COLUMN> değeriyle ilişkili ek öznitelikler bu makalenin devamında açıklanmıştır.

Şema öğeleri

Bu bölümde, XML şemasının XML biçim dosyaları için tanımladığı her öğenin amacı özetlenmiştir. Öznitelikler, bu makalenin devamında ayrı bölümlerde açıklanmıştır.

  • <BCPFORMAT>

    Belirli bir veri dosyasının kayıt yapısını tanımlayan format-file öğesi ve tablodaki bir tablo satırının sütunlarına karşılık gelir.

  • <RECORD .../>

    Bir veya daha fazla <FIELD> öğesi içeren karmaşık bir öğe tanımlar. Alanların biçim dosyasında bildirildiği sıra, bu alanların veri dosyasında görünme sırasıdır.

  • <FIELD .../>

    Veri dosyasında veri içeren bir alan tanımlar. Bu öğenin öznitelikleri, bu makalenin devamında <FIELD> Öğesinin Özniteliklerinde ele alınmalıdır.

  • <ROW .../>

    Bir veya daha fazla <COLUMN> öğesi içeren karmaşık bir öğe tanımlar. <COLUMN> öğelerinin sırası, <FIELD> tanımındaki RECORD öğelerin sıralamasından bağımsızdır. Bunun yerine, bir biçim dosyasındaki <COLUMN> öğelerinin sırası, sonuç satır kümesinin sütun sırasını belirler. Veri alanları, ilgili <COLUMN> öğelerinin <COLUMN> öğesinde bildirildiği sırayla yüklenir. Daha fazla bilgi için, bu makalenin devamında Toplu İçeri Aktarma <ROW> ÖğesiniNasıl Kullanır? bölümüne bakın.

  • <COLUMN>

    Sütunu öğe olarak tanımlar (<COLUMN>). Her <COLUMN> öğesi bir <FIELD> öğesine karşılık gelir (kimliği SOURCE öğesinin <COLUMN> özniteliğinde belirtilir). Bu öğenin öznitelikleri, bu makalenin devamında <COLUMN> Öğesinin Özniteliklerinde ele alınmalıdır. Ayrıca bu makalenin ilerleyen kısımlarında, 'da toplu içe aktarmanın <COLUMN> Öğesi'yi nasıl kullandığına bakın.

  • </BCPFORMAT>

    Biçim dosyasını sonlandırmak için gereklidir.

<FIELD> öğesinin öznitelikleri

Bu bölümde, aşağıdaki şema söz diziminde özetlenen <FIELD> öğesinin öznitelikleri açıklanmaktadır:

<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>

Her <FIELD> öğesi diğerlerinden bağımsızdır. Bir alan aşağıdaki öznitelikler açısından açıklanmıştır:

FIELD özniteliği Açıklama Opsiyonel/
Gerekli
ID="fieldID" Veri dosyasındaki alanın mantıksal adını belirtir. Alanın kimliği, alana başvurmak için kullanılan anahtardır.

<FIELD ID="fieldID" /><COLUMN SOURCE="fieldID" />
Gerekli
xsi:type="alan türü" Bu, öğesinin örneğinin türünü tanımlayan bir XML yapısıdır (öznitelik gibi kullanılır). fieldType değeri, belirli bir örnekte isteğe bağlı özniteliklerden hangisinin ihtiyacınız olduğunu belirler. Gerekli (veri türüne bağlı olarak)
UZUNLUK="n" Bu öznitelik, sabit uzunlukta bir veri türünün örneğinin uzunluğunu tanımlar.

n değeri pozitif bir tamsayı olmalıdır.
xsi:type değeri gerektirmediği sürece isteğe bağlı
PREFIX_LENGTH="p" Bu öznitelik, ikili veri gösterimi için ön ek uzunluğunu tanımlar. PREFIX_LENGTH, pşu değerlerden biri olmalıdır: 1, 2, 4veya 8. xsi:type değeri gerektirmediği sürece isteğe bağlı
MAX_LENGTH="m" Bu öznitelik, belirli bir alanda depolanabilecek en fazla bayt sayısıdır. Hedef tablo olmadan sütun maksimum uzunluğu bilinmez. MAX_LENGTH özniteliği, çıkış karakteri sütununun uzunluk üst sınırını kısıtlar ve sütun değeri için ayrılan depolama alanını sınırlar. Bu, özellikle OPENROWSET yan tümcesinde BULK işlevinin SELECT FROM seçeneğini kullanırken kullanışlıdır.

m değeri pozitif bir tamsayı olmalıdır. Varsayılan olarak, karakter sütunu için maksimum uzunluk 8.000 karakter ve nchar sütunu için 4.000 karakterdir.
Opsiyonel
COLLATION="collationName" COLLATION yalnızca karakter alanları için izin verilir. SQL Server harmanlama adlarının listesi için bkz. SQL Server Harmanlama Adı. Opsiyonel
TERMINATOR="sonlandırıcı" Bu öznitelik, bir veri alanının sonlandırıcısını belirtir. Sonlandırıcı herhangi bir karakter olabilir. Sonlandırıcı, verilerin parçası olmayan eşsiz bir karakter olmalıdır.

Varsayılan olarak, alan sonlandırıcısı sekme karakteridir (\tolarak gösterilir). Paragraf işaretini göstermek için \r\nkullanın.
Bu öznitelik, yalnızca bu özniteliği gerektiren karakter verilerinin xsi:type ile kullanılır.

  • xsi:type öğesinin değerlerini <FIELD>

    xsi:type değeri, bir öğenin örneğinin veri türünü tanımlayan bir XML yapısıdır (öznitelik gibi kullanılır). Daha fazla bilgi için bu makaledeki "xsi:type değerini veri kümesine yerleştirme" başlığına bakın bölümünde.

    xsi:type öğesinin <FIELD> değeri aşağıdaki veri türlerini destekler.

    <FIELD> xsi:type değerleri Gerekli XML öznitelikleri
    veri türü için
    İsteğe bağlı XML öznitelikleri
    veri türü için
    NativeFixed LENGTH Hiç kimse.
    NativePrefix PREFIX_LENGTH MAX_LENGTH
    CharFixed LENGTH COLLATION
    NCharFixed LENGTH COLLATION
    CharPrefix PREFIX_LENGTH MAX_LENGTH, COLLATION
    NCharPrefix PREFIX_LENGTH MAX_LENGTH, COLLATION
    CharTerm TERMINATOR MAX_LENGTH, COLLATION
    NCharTerm TERMINATOR MAX_LENGTH, COLLATION

    SQL Server veri türleri hakkında daha fazla bilgi için bkz. Veri türleri.

  • <COLUMN> öğesinin Öznitelikleri

    Bu bölümde, aşağıdaki şema söz diziminde özetlenen <COLUMN> öğesinin öznitelikleri açıklanmaktadır:

    <COLUMN
    SOURCE = "fieldID"
    NAME = "columnName"
    xsi:type = "columnType"
    [ LENGTH = "n" ]
    [ PRECISION = "n" ]
    [ SCALE = "value" ]
    [ NULLABLE = { "YES" | "NO" } ]
    />
    

    Bir alan, aşağıdaki öznitelikler kullanılarak hedef tablodaki bir sütuna eşlenir:

    COLUMN özniteliği Açıklama Opsiyonel/
    Gerekli
    SOURCE="fieldID" Sütuna eşlenen alanın kimliğini belirtir.

    <COLUMN SOURCE=fieldID"/> eşleşir <FIELD ID=fieldID"/>
    Gerekli
    NAME="columnName" Biçim dosyasıyla temsil edilen satır kümesindeki sütunun adını belirtir. Bu sütun adı, sonuç kümesindeki sütunu tanımlamak için kullanılır ve hedef tabloda kullanılan sütun adına karşılık olmaması gerekir. Gerekli
    xsi:type="ColumnType" Bu, öğesinin örneğinin veri türünü tanımlayan bir XML yapısıdır (öznitelik gibi kullanılır). ColumnType değeri, belirli bir örnekte hangi isteğe bağlı özniteliklere ihtiyacınız olduğunu belirler.

    Not:ColumnType ve ilişkili özniteliklerinin olası değerleri, <COLUMN>COLUMN< öğesi > xsi:type değerlerinin öğesi tablosunda listelenir.
    Opsiyonel
    UZUNLUK="n" Sabit uzunlukta bir veri türünün örneğinin uzunluğunu tanımlar. LENGTH yalnızca xsi:type bir dize veri türü olduğunda kullanılır.

    n değeri pozitif bir tamsayı olmalıdır.
    İsteğe bağlı (yalnızca xsi:type bir dize veri türüyse kullanılabilir)
    PRECISION="n" Bir sayıdaki basamak sayısını gösterir. Örneğin, 123,45 sayısının hassasiyeti 5'tir.

    Değer pozitif bir tamsayı olmalıdır.
    İsteğe bağlı (yalnızca xsi:type değişken sayı veri türü olduğunda kullanılabilir)
    SCALE="int" Bir sayının ondalık noktasının sağındaki basamak sayısını gösterir. Örneğin, 123,45 sayısı 2 ölçeğine sahiptir.

    Değer bir tamsayı olmalıdır.
    İsteğe bağlı (yalnızca xsi:type değişken sayı veri türü olduğunda kullanılabilir)
    NULLABLE={ "EVET" | "HAYIR" } Bir sütunun NULL değerleri varsayıp varsayamayacağını gösterir. Bu öznitelik FIELDSbağımsızdır. Ancak, bir sütun null değer alamazsa ve alan NULL olarak belirtilmişse (herhangi bir değer belirtilmediğinde), çalışma zamanında bir hata oluşur.

    NULLABLE özniteliği yalnızca düz bir SELECT FROM OPENROWSET(BULK...) deyimi yaparsanız kullanılır.
    İsteğe bağlı (herhangi bir veri türü için kullanılabilir)

  • xsi:type öğesinin değerlerini <COLUMN>

    xsi:type değeri, bir öğenin örneğinin veri türünü tanımlayan bir XML yapısıdır (öznitelik gibi kullanılır). Bu bölümün devamında yer alan "xsi:type Değerini Veri Kümesine Yerleştirme" kullanma hakkında bilgi için.

    <COLUMN> öğesi aşağıdaki gibi yerel SQL veri türlerini destekler:

    Tür kategorisi <COLUMN> veri türleri Gerekli XML öznitelikleri
    veri türü için
    İsteğe bağlı XML öznitelikleri
    veri türü için
    Sabit SQLBIT, SQLTINYINT, SQLSMALLINT, SQLINT, SQLBIGINT, SQLFLT4, SQLFLT8, SQLDATETIME, SQLDATETIM4, SQLDATETIM8, SQLMONEY, SQLMONEY4, SQLVARIANTve SQLUNIQUEID Hiç kimse. NULLABLE
    değişken numarası SQLDECIMAL ve SQLNUMERIC Hiç kimse. NULLABLE, PRECISION, SCALE
    Değişken tarih ve saat SQLDATETIME2, SQLTIME, SQLDATETIMEOFFSET Hiç kimse. NULLABLE, SCALE
    LOB SQLIMAGE, CharLOB, SQLTEXTve SQLUDT Hiç kimse. NULLABLE
    Karakter LOB SQLNTEXT Hiç kimse. NULLABLE
    İkili dize SQLBINARY ve SQLVARYBIN Hiç kimse. NULLABLE, LENGTH
    karakter dizesi SQLCHAR, SQLVARYCHAR, SQLNCHARve SQLNVARCHAR Hiç kimse. NULLABLE, LENGTH

    Önemli

    SQLXML verilerini toplu olarak dışarı aktarmak veya içeri aktarmak için, biçim dosyanızda aşağıdaki veri türlerinden birini kullanın: SQLCHAR veya SQLVARYCHAR (veriler istemci kod sayfasında veya harmanlamanın ima ettiği kod sayfasında gönderilir), SQLNCHAR veya SQLNVARCHAR (veriler Unicode olarak gönderilir) ya da SQLBINARY veya SQLVARYBIN (veriler dönüştürme olmadan gönderilir).

    SQL Server veri türleri hakkında daha fazla bilgi için bkz. Veri türleri.

Toplu içe aktarma <ROW> öğesini nasıl kullanır?

<ROW> öğesi bazı bağlamlarda yoksayılır. <ROW> öğesinin toplu içeri aktarma işlemini etkileyip etkilemediği, işlemin nasıl gerçekleştirildiğine bağlıdır:

  • bcp komutu

    Veriler hedef tabloya yüklendiğinde bcp<ROW> bileşenini yoksayar. Bunun yerine bcp hedef tablonun sütun türlerine göre verileri yükler.

  • Transact-SQL ifadeleri (BULK INSERT ve OPENROWSETtoplu satır kümesi sağlayıcısı)

    Verileri bir tabloya toplu içeri aktarırken, Transact-SQL deyimleri giriş satır kümesini oluşturmak için <ROW> bileşenini kullanır. Ayrıca Transact-SQL deyimleri, <ROW> altında belirtilen sütun türlerine ve hedef tablodaki ilgili sütuna göre uygun tür dönüştürmeleri gerçekleştirir. Biçim dosyasında ve hedef tabloda belirtilen sütun türleri arasında uyuşmazlık varsa, ek bir tür dönüştürmesi gerçekleşir. Bu ek tür dönüştürme, BULK INSERT veya OPENROWSETtoplu satır kümesi sağlayıcısındaki davranışlarda bcpile karşılaştırıldığında bazı tutarsızlıklara (yani duyarlık kaybına) yol açabilir.

    <ROW> öğesindeki bilgiler, ek bilgi gerekmeden bir satırın oluşturulabilmesini sağlar. Bu nedenle, bir SELECT deyimi (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>) kullanarak bir satır kümesi oluşturabilirsiniz.

    OPENROWSET BULK yan tümcesi bir biçim dosyası gerektirir. Alanın veri türünden sütunun veri türüne dönüştürme işlemi yalnızca XML biçim dosyasıyla kullanılabilir.

Toplu içe aktarma <COLUMN> öğesini nasıl kullanır?

Verileri tabloya toplu olarak içeri aktarmak için, biçim dosyasındaki <COLUMN> öğeleri aşağıdakileri belirterek veri dosyası alanını tablo sütunlarına eşler:

  • Veri dosyasındaki bir satırdaki her alanın konumu.

  • Alan veri türünü istenen sütun veri türüne dönüştürmek için kullanılan sütun türü.

Hiçbir sütun bir alana eşlenmemişse, alan oluşturulan satırlara kopyalanmaz. Bu davranış, veri dosyasının farklı sütunlara (farklı tablolarda) sahip satırlar oluşturmasına olanak tanır.

Benzer şekilde, bir tablodan verileri toplu olarak dışarı aktarmak için, biçim dosyasındaki her <COLUMN> giriş tablosu satırındaki sütunu çıkış veri dosyasındaki karşılık gelen alana eşler.

xsi:type değerini bir veri kümesine yerleştirme

XML belgesi XML Şema Tanımı (XSD) dili aracılığıyla doğrulandığında, xsi:type değeri veri kümesine yerleştirilmez. Ancak, aşağıdaki kod parçacığında gösterildiği gibi XML biçim dosyasını bir XML belgesine yükleyerek (örneğin, xsi:type) myDoc bilgileri veri kümesine yerleştirebilirsiniz:

...;
myDoc.LoadXml(xmlFormat);
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");
for (int i = 0; i < ColumnList.Count; i++)
{
    Console.Write($"COLUMN: xsi:type={ColumnList[i].Attributes["type",
        "http://www.w3.org/2001/XMLSchema-instance"].Value}\n");
}

Örnek XML biçim dosyaları

Bu bölüm, Adventure Works örneği de dahil olmak üzere çeşitli durumlarda XML biçim dosyalarını kullanma hakkında bilgi içerir.

Not

Aşağıdaki örneklerde gösterilen veri dosyalarında, <tab> veri dosyasındaki bir sekme karakterini ve <return> satır başı gösterir.

Örneklerde XML biçim dosyalarını kullanmanın temel yönleri aşağıda gösterildiği gibi gösterilmiştir:

Biçim dosyaları oluşturma hakkında bilgi için bkz. bcp (SQL Server) ile biçim dosyası oluşturma.

A. Karakter-verisi alanlarını tablo sütunlarıyla aynı sırada düzenle

Aşağıdaki örnekte, üç karakter verisi alanı içeren bir veri dosyasını açıklayan bir XML biçim dosyası gösterilmektedir. Biçim dosyası, veri dosyasını üç sütun içeren bir tabloyla eşler. Veri alanları, tablonun sütunlarıyla bire bir karşılık gelir.

  • Tablo (satır):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • Veri dosyası (kayıt):Age<tab>FirstName<tab>LastName<return>

Aşağıdaki XML biçim dosyası veri dosyasından tabloya okunur.

<RECORD> öğesinde, biçim dosyası üç alandaki veri değerlerini karakter verileri olarak temsil eder. Her alan için TERMINATOR özniteliği, veri değerini izleyen sonlandırıcıyı gösterir.

Veri alanları, tablonun sütunlarıyla bire bir karşılık gelir. <ROW> öğesinde biçim dosyası sütun Age birinci alana, sütun FirstName ikinci alana ve sütun LastName üçüncü alana eşler.

<?xml version="1.0"?>
<BCPFORMAT
    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="12" />
        <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
        <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
            MAX_LENGTH="30"
            COLLATION="SQL_Latin1_General_CP1_CI_AS" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
        <COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR" />
        <COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR" />
    </ROW>
</BCPFORMAT>

Not

Eşdeğer AdventureWorks2025 bir örnek için bkz. bcp (SQL Server) ile biçim dosyası oluşturma.

B. Veri alanlarını ve tablo sütunlarını farklı sıralama

Aşağıdaki örnekte, üç karakter verisi alanı içeren bir veri dosyasını açıklayan bir XML biçim dosyası gösterilmektedir. Biçim dosyası, veri dosyasını, veri dosyasının alanlarından farklı olarak sıralanmış üç sütun içeren bir tabloyla eşler.

  • Tablo (satır):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • Veri dosyası (kayıt):Age<tab>FirstName<tab>LastName<return>

<RECORD> öğesinde, biçim dosyası üç alandaki veri değerlerini karakter verileri olarak temsil eder.

<ROW> öğesinde biçim dosyası sütun Age birinci alana, sütun FirstName üçüncü alana ve sütun LastName ikinci alana eşler.

<?xml version="1.0"?>
<BCPFORMAT
    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="12" />
        <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20"
            COLLATION="SQL_Latin1_General_CP1_CI_AS" />
        <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
            MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
        <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
        <COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR" />
    </ROW>
</BCPFORMAT>

C. Veri alanını atla

Aşağıdaki örnekte, dört karakter verisi alanı içeren bir veri dosyasını açıklayan bir XML biçim dosyası gösterilmektedir. Biçim dosyası, veri dosyasını üç sütun içeren bir tabloyla eşler. İkinci veri alanı hiçbir tablo sütununa karşılık gelmez.

  • Tablo (satır):Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30))
  • Veri dosyası (kayıt):Age<tab>FirstName<tab>LastName<return>

<RECORD> öğesinde, biçim dosyası dört alandaki veri değerlerini karakter verileri olarak temsil eder. Her alan için TERMINATOR özniteliği, veri değerini izleyen sonlandırıcıyı gösterir.

<ROW> öğesinde, biçim dosyası sütun Age birinci alanla, sütun FirstName üçüncü alana ve sütun LastName dördüncü alana eşler.

<?xml version="1.0"?>
<BCPFORMAT
    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="12" />
        <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="10"
            COLLATION="SQL_Latin1_General_CP1_CI_AS" />
        <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t"
            MAX_LENGTH="20"
            COLLATION="SQL_Latin1_General_CP1_CI_AS" />
        <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"
            MAX_LENGTH="30"
            COLLATION="SQL_Latin1_General_CP1_CI_AS" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
        <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
        <COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR" />
    </ROW>
</BCPFORMAT>

Not

Eşdeğer AdventureWorks2025 bir örnek için bkz. Veri alanını (SQL Server) atlamak için biçim dosyası kullanma.

D. <FIELD> xsi:type'i <COLUMN> xsi:type ile eşleştir

Aşağıdaki örnekte farklı alan türleri ve bunların sütunlara eşlemeleri gösterilmektedir.

<?xml version="1.0"?>
<BCPFORMAT
    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD xsi:type="CharTerm" ID="C1" TERMINATOR="\t"
            MAX_LENGTH="4" />
        <FIELD xsi:type="CharFixed" ID="C2" LENGTH="10"
            COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
        <FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2"
            MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
        <FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t"
            MAX_LENGTH="4" />
        <FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10"
            COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
        <FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2"
            MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
        <FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT" />
        <COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR"
            LENGTH="16" NULLABLE="NO" />
        <COLUMN SOURCE="C3" NAME="LastName" />
        <COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY" />
        <COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE" />
        <COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT" />
        <COLUMN SOURCE="C7" NAME="Interest" xsi:type="SQLDECIMAL"
            PRECISION="5" SCALE="3" />
    </ROW>
</BCPFORMAT>

E. XML verilerini tabloya eşleme

Aşağıdaki örnek, ilk sütunun t_xml veri türüyle, ikinci sütunun da int veri türüyle eşlendiği boş bir iki sütunlu tablo (xml) oluşturur.

CREATE TABLE t_xml (c1 INT, c2 XML);

Aşağıdaki XML biçim dosyası, tablo t_xmlbir veri dosyası yükler.

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="NativePrefix" PREFIX_LENGTH="1" />
        <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT" />
        <COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR" />
    </ROW>
</BCPFORMAT>

F. Sabit uzunluklu veya sabit genişlikli alanları içeri aktarma

Aşağıdaki örnekte her biri 10 veya 6 karakterlerin sabit alanları açıklanmaktadır. Biçim dosyası bu alan uzunluklarını/genişliklerini sırasıyla LENGTH="10" ve LENGTH="6"olarak temsil eder. Veri dosyalarının her satırı, biçim dosyasının <CR><LF>olarak temsil ettiği TERMINATOR="\r\n"satır başı besleme bileşimiyle biter.

<?xml version="1.0"?>
<BCPFORMAT
    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharFixed" LENGTH="10" />
        <FIELD ID="2" xsi:type="CharFixed" LENGTH="6" />
        <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" />
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
        <COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
    </ROW>
</BCPFORMAT>

Ek örnekler

Hem XML olmayan biçim dosyaları hem de XML biçim dosyalarına daha fazla örnek için aşağıdaki makalelere bakın: