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 Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Veri dosyası tablodaki sütun sayısından daha fazla alan içerebilir. Bu makalede, tablo sütunlarını ilgili veri alanlarıyla eşleyerek ve ek alanları yoksayarak hem XML olmayan hem de XML biçim dosyalarını daha fazla alan içeren bir veri dosyasını barındıracak şekilde değiştirme açıklanmaktadır.
Daha fazla bilgi için bkz. bcp (SQL Server) ile biçim dosyası oluşturma.
Not
XML veya XML olmayan biçimdeki bir dosya, bir veri dosyasını tabloya toplu olarak aktarmak için bcp yardımcı programı komutu, BULK INSERT (Transact-SQL) deyimi veya INSERT ... SELECT * FROM OPENROWSET BULK (Transact-SQL) deyimi kullanılarak kullanılabilir. Daha fazla bilgi için bkz. Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server).
Not
Toplu ekleme 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şımak için kullanabilirsiniz.
Örnek test koşulları
Bu makaledeki değiştirilmiş biçim dosyalarına örnek olarak örnek tablo myTestSkipField ve veri dosyası temel alınmaktadır D:\BCP\myTestSkipField.bcp. Kod örneğindeki yerel dosya konumunu makinenizdeki bir dosya konumuyla değiştirin.
Örnek tablo
Betik, bir test veritabanı ve adlı myTestSkipFieldbir tablo oluşturur. Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName varchar(25),
LastName varchar(30)
);
Örnek veri dosyası
Boş bir dosya D:\BCP\myTestSkipField.bcp oluşturun ve aşağıdaki verileri ekleyin:
1,SkipMe,Anthony,Grosse
2,SkipMe,Alica,Fatnowna
3,SkipMe,Stella,Rosenhain
Biçim dosyalarını oluşturma
verileri myTestSkipField.bcpmyTestSkipField tablosuna toplu olarak aktarmak için biçim dosyasının aşağıdakileri yapması gerekir:
- İlk veri alanını
PersonIDilk sütuna eşleyin. - İkinci veri alanını atlayın.
- Üçüncü veri alanını
FirstNameikinci sütuna eşleyin. - Dördüncü veri alanını üçüncü sütunla (
LastName) eşleyin.
Biçim dosyasını oluşturmak için en basit yöntem, bcp yardımcı programınıkullanmaktır. İlk olarak, mevcut tablodan bir temel biçim dosyası oluşturun. İkincisi, temel biçim dosyasını gerçek veri dosyasını yansıtacak şekilde değiştirin.
XML olmayan bir biçim dosyası oluşturma
Ayrıntılı bilgi için SQL Server üzerinde XML dışı biçimli dosyaların kullanımını gözden geçirin. Aşağıdaki komut, şemasına göre myTestSkipField.fmtxml olmayan bir biçim dosyası oluşturmak için myTestSkipField kullanır. Buna ek olarak, karakter verilerini belirtmek için niteleyici c kullanılır, t, alan sonlandırıcısı olarak virgül belirtmek için kullanılır ve T tümleşik güvenlik kullanılarak güvenilen bir bağlantı belirtmek için kullanılır. Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myTestSkipField format nul -c -f D:\BCP\myTestSkipField.fmt -t, -T
XML olmayan biçim dosyasını değiştirme
XML olmayan biçimli dosyaların yapısını terminoloji için gözden geçirin. Not Defteri'nde D:\BCP\myTestSkipField.fmt açın ve aşağıdaki değişiklikleri yapın:
-
FirstNameiçin biçim dosyası satırının tamamını kopyalayın ve sonraki satıraFirstNamesonra doğrudan yapıştırın. - Yeni satır ve sonraki tüm satırlar için konak dosya alanı sırası değerini bir artır.
- Veri dosyasındaki gerçek alan sayısını yansıtacak şekilde sütun sayısını artırın.
- İkinci biçim dosyası satırı için sunucu sütun sırasını
20olarak değiştirin.
Yapılan değişiklikleri karşılaştırın:
Önce
13.0
3
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
Sonra
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 0 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 50 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
Değiştirilen biçim dosyası şimdi aşağıdakileri yansıtır:
- 4 veri alanı
-
myTestSkipField.bcp'daki ilk veri alanı ilk sütuna eşlenirmyTestSkipField.. PersonID -
myTestSkipField.bcp'daki ikinci veri alanı hiçbir sütuna eşlenmez. -
myTestSkipField.bcp'daki üçüncü veri alanı ikinci sütuna eşlenirmyTestSkipField.. FirstName -
myTestSkipField.bcp'daki dördüncü veri alanı üçüncü sütunla eşlenirmyTestSkipField.. LastName
XML biçim dosyası oluşturma
Ayrıntılı bilgi için XML biçim dosyalarını (SQL Server) gözden geçirin. Aşağıdaki komut, bcp yardımcı programı kullanarak myTestSkipField.xmlşemasını temel alan myTestSkipFieldbir xml biçimi dosyası oluşturur.
- Niteleyici
c, karakter verilerini belirtmek için kullanılır -
t,alan sonlandırıcı olarak virgül belirtmek için kullanılır -
Ttümleşik güvenlik kullanarak güvenilir bir bağlantı belirtmek için kullanılır. - xml tabanlı biçim dosyası oluşturmak için
xniteleyici kullanılmalıdır.
Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myTestSkipField format nul -c -x -f D:\BCP\myTestSkipField.xml -t, -T
XML biçim dosyasını değiştirme
şema söz dizimini terminoloji için XML biçim dosyaları için gözden geçirin. Not Defteri'nde D:\BCP\myTestSkipField.xml açın ve aşağıdaki değişiklikleri yapın:
- İkinci alanın tamamını kopyalayın ve sonraki satırdaki ikinci alanın hemen arkasına yapıştırın.
-
FIELD IDdeğerini yeniFIELDve her bir sonrakiFIELDiçin 1 artırın. -
COLUMN SOURCEdeğerini 1 artırın,FirstNameve düzeltilmiş eşlemeyi yansıtması içinLastName'yi ayarlayın.
Yapılan değişiklikleri karşılaştırın:
Önce
<?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="25" 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="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>
Sonra
<?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="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" 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="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>
Değiştirilen biçim dosyası şimdi aşağıdakileri yansıtır:
- 4 veri alanı
-
FIELD1'eCOLUMNkarşılık gelen 1, ilk tablo sütununa eşlenir,myTestSkipField.. PersonID -
FIELD2 hiçbirCOLUMNtablo sütununa karşılık gelmez ve bu nedenle hiçbir tablo sütununa eşlenmez. -
FIELD3'eCOLUMNkarşılık gelen 3, ikinci tablo sütununa eşlenir,myTestSkipField.. FirstName -
FIELD4'eCOLUMNkarşılık gelen 4, üçüncü tablo sütununa eşlenir,myTestSkipField.. LastName
Veri alanını atlamak için biçim dosyasıyla verileri içeri aktarma
Örneklerde bu makalede oluşturulan örnek veritabanı, veri dosyası ve biçim dosyaları kullanılmıştır.
bcp ve XML formatında olmayan dosya kullanma
Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.fmt -T
bcp ve XML biçim dosyalarını kullanma (SQL Server)
Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.xml -T
BULK INSERT (Transact-SQL) ve XML olmayan biçimli dosya kullanma
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
BULK INSERT dbo.myTestSkipField
FROM 'D:\BCP\myTestSkipField.bcp'
WITH (FORMATFILE = 'D:\BCP\myTestSkipField.fmt');
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
BULK INSERT (Transact-SQL) ve XML biçim dosyalarını (SQL Server) kullanma
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
BULK INSERT dbo.myTestSkipField
FROM 'D:\BCP\myTestSkipField.bcp'
WITH (FORMATFILE = 'D:\BCP\myTestSkipField.xml');
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
OPENROWSET BULK (Transact-SQL) ve XML olmayan biçim dosyası kullanma
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
INSERT INTO dbo.myTestSkipField
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myTestSkipField.bcp',
FORMATFILE = 'D:\BCP\myTestSkipField.fmt'
) AS t1;
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;
OPENROWSET BULK (Transact-SQL) ve XML biçim dosyalarını (SQL Server) kullanma
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE myTestSkipField;
INSERT INTO dbo.myTestSkipField
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myTestSkipField.bcp',
FORMATFILE = 'D:\BCP\myTestSkipField.xml'
) AS t1;
GO
-- review results
SELECT * FROM TestDatabase.dbo.myTestSkipField;