Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örnek
Azure Synapse Analytics
Analytics 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ındakiRECORDöğ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ğiSOURCEöğ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:typedeğ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:typedeğerleriGerekli XML öznitelikleri
veri türü içinİsteğe bağlı XML öznitelikleri
veri türü içinNativeFixedLENGTHHiç kimse. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONSQL Server veri türleri hakkında daha fazla bilgi için bkz. Veri türleri.
<COLUMN>öğesinin ÖznitelikleriBu 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/
GerekliSOURCE="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. LENGTHyalnızcaxsi:typebir 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:typebir 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:typedeğ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:typedeğişken sayı veri türü olduğunda kullanılabilir)NULLABLE={ "EVET" | "HAYIR" } Bir sütunun NULLdeğerleri varsayıp varsayamayacağını gösterir. Bu öznitelikFIELDSbağımsızdır. Ancak, bir sütun null değer alamazsa ve alanNULLolarak belirtilmişse (herhangi bir değer belirtilmediğinde), çalışma zamanında bir hata oluşur.
NULLABLEözniteliği yalnızca düz birSELECT 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:typedeğ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:typeDeğ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ürleriGerekli XML öznitelikleri
veri türü içinİsteğe bağlı XML öznitelikleri
veri türü içinSabit SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4,SQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANTveSQLUNIQUEIDHiç kimse. NULLABLEdeğişken numarası SQLDECIMALveSQLNUMERICHiç kimse. NULLABLE,PRECISION,SCALEDeğişken tarih ve saat SQLDATETIME2,SQLTIME,SQLDATETIMEOFFSETHiç kimse. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTveSQLUDTHiç kimse. NULLABLEKarakter LOB SQLNTEXTHiç kimse. NULLABLEİkili dize SQLBINARYveSQLVARYBINHiç kimse. NULLABLE,LENGTHkarakter dizesi SQLCHAR,SQLVARYCHAR,SQLNCHARveSQLNVARCHARHiç 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:
SQLCHARveyaSQLVARYCHAR(veriler istemci kod sayfasında veya harmanlamanın ima ettiği kod sayfasında gönderilir),SQLNCHARveyaSQLNVARCHAR(veriler Unicode olarak gönderilir) ya daSQLBINARYveyaSQLVARYBIN(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 INSERTveOPENROWSETtoplu 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 INSERTveyaOPENROWSETtoplu 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, birSELECTdeyimi (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>) kullanarak bir satır kümesi oluşturabilirsiniz.OPENROWSET BULKyan 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:
- Tablo sütunlarıyla aynı sıra karakter verileri alanları
- Veri alanlarını ve tablo sütunlarını farklı sıralama
- Veri alanını atla
- Farklı alan türlerini sütunlara eşleme
- XML verilerini tablo eşleme
- Sabit uzunluklu veya sabit genişlikli alanları içeri aktarma
- Ek örnekler
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>
Not
Eşdeğer AdventureWorks2025 bir örnek için bkz. Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma.
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:
- Bir Tablo Sütununu Atlamak için Biçim Dosyası Kullanma (SQL Server)
- Bir veri alanını atlamak için biçim dosyası kullanma (SQL Server)
- Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma
İlgili görevler
- bcp (SQL Server) ile biçim dosyası oluşturma
- Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server)
- Bir Tablo Sütununu Atlamak için Biçim Dosyası Kullanma (SQL Server)
- Bir veri alanını atlamak için biçim dosyası kullanma (SQL Server)
- Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma