Aracılığıyla paylaş


bcp ile biçim dosyası oluşturma (SQL Server)

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

Bu makalede, belirli bir tablo için biçim dosyası oluşturmak üzere bcp yardımcı programı nasıl kullanılacağı açıklanmaktadır. Biçim dosyası, belirtilen veri türü seçeneğine (-n, -c, -wveya -N) ve tablo veya görünüm sınırlayıcılarına dayanır.

SQL Server tablosuna toplu içeri aktardığınızda veya bir tablodan verileri toplu olarak dışarı aktardığınızda, veri dosyaları yazmak için esnek bir sistem olarak bir biçim dosyası kullanabilirsiniz. Biçim dosyaları, diğer veri biçimlerine uymak veya diğer yazılım programlarından veri dosyalarını okumak için çok az düzenleme gerektirir veya hiç düzenleme gerektirmez.

Sınırlama

Bir biçim dosyasını okumak için kullanılan bcp yardımcı programının (bcp.exe) sürümü, biçim dosyasını oluşturmak için kullanılan sürümle aynı veya daha sonraki bir sürüm olmalıdır. Örneğin, SQL Server 2016 (13.x) bcp sürüm 12.0 biçim dosyasını okuyabilir, SQL Server 2014 (12.x) bcptarafından oluşturulur, ancak SQL Server 2014 (12.x) bcp, SQL Server 2016 (13.x) bcptarafından oluşturulan sürüm 13.0 biçim dosyasını okuyamaz.

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 'de COPY deyiminiveya COPY INTO ve PolyBase gibiT-SQL deyimlerini kullanarak veri taşımayı gerçekleştirin.

Biçim dosyaları oluşturma

SQL Server iki tür biçim dosyasını destekler: XML dışı biçim ve XML biçimi. XML olmayan biçim, SQL Server'ın önceki sürümleri tarafından desteklenen özgün biçimdir.

Genellikle, XML ve XML olmayan biçim dosyaları değiştirilebilir. Ancak, XML olmayan biçim dosyalarına göre çeşitli avantajlar sağladığından, biçim dosyaları için XML söz dizimi kullanmanızı öneririz.

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır. Adventure Works Cycles, veritabanı kavramlarını ve senaryolarını göstermek için kullanılan kurgusal bir üretim şirketidir.

XML biçim dosyası oluşturma

Biçim dosyası oluşturmak için bcp komutu kullanmak için format bağımsız değişkenini belirtin ve veri dosyası yolu yerine nul kullanın. format seçeneği her zaman -f seçeneğini gerektirir ve XML biçim dosyası oluşturmak için -xgibi bcp <table_or_view> format nul -f <format_file_name> -x seçeneğini de belirtmeniz gerekir.

XML biçimli bir dosyayı ayırt etmek için, dosya adı uzantısı olarak .xml kullanmanızı öneririz; örneğin, MyTable.xml.

XML biçim dosyalarının yapısı ve alanları hakkında bilgi için bkz. XML Biçim Dosyaları (SQL Server).

Örnekler

Bu bölüm, xml biçim dosyası oluşturmak için bcp komutlarının nasıl kullanılacağını gösteren aşağıdaki örnekleri içerir. HumanResources.Department tablosu dört sütun içerir: DepartmentID, Name, GroupNameve ModifiedDate.

A. Karakter verileri için XML biçim dosyası oluşturma

Aşağıdaki örnek, Department.xml tablosu için HumanResources.Departmentbir XML biçim dosyası oluşturur. Biçim dosyası karakter veri biçimlerini ve varsayılan olmayan bir alan sonlandırıcısını (,) kullanır. Oluşturulan biçim dosyasının içeriği komutundan sonra sunulur.

bcp komutu aşağıdaki niteleyicileri içerir.

Elemeleri Açıklama
format nul -x -f <format_file> XML biçim dosyasını belirtir.
-c Karakter verilerini belirtir.
-t, Alan sonlandırıcısı olarak virgül (,) belirtir.

Not: Veri dosyası varsayılan alan sonlandırıcısını (\t) kullanıyorsa, -t anahtarı gereksizdir.
-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. -T belirtilmezse, başarıyla oturum açmak için -U ve -P belirtmeniz gerekir.

Windows komut isteminde aşağıdaki bcp komutunu girin:

bcp AdventureWorks2022.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

oluşturulan biçim dosyası Department-c.xmlaşağıdaki XML öğelerini içerir:

<?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="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Bu biçim dosyasının söz dizimi hakkında bilgi için bkz. XML Biçim Dosyaları (SQL Server). Karakter verileri hakkında bilgi için bkz. Verileri içeri veya dışarı aktarmak için karakter biçimini kullanma (SQL Server).

B. Yerel veriler için XML biçim dosyası oluşturma

Aşağıdaki örnek, Department-n.xml tablosu için HumanResources.Departmentbir XML biçim dosyası oluşturur. Biçim dosyası yerel veri türlerini kullanır. Oluşturulan biçim dosyasının içeriği komutundan sonra sunulur.

bcp komutu aşağıdaki niteleyicileri içerir.

Elemeleri Açıklama
format nul -x -f <format_file> XML biçim dosyasını belirtir.
-n Yerel veri türlerini belirtir.
-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. -T belirtilmezse, başarıyla oturum açmak için -U ve -P belirtmeniz gerekir.

Windows komut isteminde aşağıdaki bcp komutunu girin:

bcp AdventureWorks2022.HumanResources.Department format nul -x -f Department-n.xml -n -T

oluşturulan biçim dosyası Department-n.xmlaşağıdaki XML öğelerini içerir:

<?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="NativeFixed" LENGTH="2"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Bu biçim dosyasının söz dizimi hakkında bilgi için bkz. XML Biçim Dosyaları (SQL Server). Yerel verilerin nasıl kullanılacağı hakkında bilgi için bkz. Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server).

Veri alanlarını tablo sütunlarına eşleme

bcptarafından oluşturulduğu gibi, bir biçim dosyası tüm tablo sütunlarını sırayla açıklar. Tablo satırlarını yeniden düzenlemek veya atlamak için biçim dosyasını değiştirebilirsiniz. Biçim dosyasını, alanları doğrudan tablo sütunlarıyla eşleşmeyen bir veri dosyasıyla özelleştirebilirsiniz. Daha fazla bilgi için aşağıdaki makalelere bakın: