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)
Veri dosyası, tablodaki ilgili sütunlardan farklı bir sırada düzenlenmiş alanlar içerebilir. Bu makalede, alanları tablo sütunlarından farklı bir sırada düzenlenmiş bir veri dosyasına uyarlanmış XML olmayan ve XML biçimindeki dosyalar sunulmaktadır. Değiştirilen biçim dosyası, veri alanlarını ilgili tablo sütunlarıyla eşler. Ek bilgi için 'ı inceleyin; ile bcp (SQL Server) biçim dosyası oluşturun.
XML olmayan veya XML biçimli bir dosya, bcp yardımcı programı komutu, BULK INSERT deyimi veya OPENROWSET BULK deyimi kullanılarak tabloya bir veri dosyasını toplu içeri aktarmak için kullanılabilir. Daha fazla bilgi için bkz. Verileri toplu içeri aktarmak için biçim dosyası 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, veri aktarımını Azure Data Factory 'da COPY deyiminiveya COPY INTO ve PolyBase gibiT-SQL deyimlerini kullanarak gerçekleştirin.
Örnek test koşulları
Bu makaledeki değiştirilmiş biçim dosyaları örnekleri, bu makalenin devamında tanımlanan tablo ve veri dosyasını temel alır.
Örnek tablo
Aşağıdaki Transact-SQL betiği bir test veritabanı ve myRemapadlı bir tablo oluşturur.
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE myRemap
(
PersonID SMALLINT,
FirstName VARCHAR (25),
LastName VARCHAR (30),
Gender CHAR (1)
);
Örnek veri dosyası
Aşağıdaki veriler FirstNametablosunda gösterildiği gibi LastName ve myRemap ters sırada sunar. Not Defteri gibi bir metin düzenleyicisi kullanarak D:\BCP\myRemap.bcp boş bir dosya oluşturun ve aşağıdaki verileri ekleyin:
1,Grosse,Anthony,M
2,Fatnowna,Alica,F
3,Rosenhain,Stella,F
Biçim dosyalarını oluşturma
verileri myRemap.bcpmyRemap tablosuna toplu olarak aktarmak için biçim dosyasının aşağıdaki eylemleri gerçekleştirmesi gerekir:
- İlk veri alanını
PersonIDilk sütuna eşleyin. - İkinci veri alanını
LastNameüçüncü sütuna eşleyin. - Üçüncü veri alanını
FirstNameikinci sütuna eşleyin. - Dördüncü veri alanını
Genderdördüncü sütuna 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 XML olmayan biçim dosyalarını (SQL Server) kullanma bölümünü gözden geçirin. Aşağıdaki komut, şemasına bağlı olarak myRemap.fmtXML olmayan bir biçim dosyası oluşturmak için myRemap kullanır. Buna ek olarak, niteleyici c karakter verilerini belirtmek için 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 kullanarak güvenilen bir bağlantı belirtmek için kullanılır. Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myRemap format nul -c -f D:\BCP\myRemap.fmt -t, -T
XML olmayan biçim dosyasını değiştirme
Terminoloji hakkında bilgi için bkz. xml olmayan biçim dosyalarının yapısı . Not Defteri'nde D:\BCP\myRemap.fmt açın ve aşağıdaki değişiklikleri yapın:
- biçim dosyası satırlarının sırasını yeniden düzenleyerek satırların
myRemap.bcp'deki veriyle aynı sırada olması gerekir. - Host dosyası alanı sıra değerlerinin sıralı olduğundan emin olun.
- Son biçim dosyası satırından sonra bir satır başı olduğundan emin olun.
Değişiklikleri karşılaştırın:
Önce
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 1 "\r\n" 4 Gender SQL_Latin1_General_CP1_CI_AS
Sonra
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 30 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 1 "\r\n" 4 Gender SQL_Latin1_General_CP1_CI_AS
Değiştirilen biçim dosyası şimdi aşağıdakileri yansıtır:
-
myRemap.bcp'daki ilk veri alanı ilk sütuna eşlenirmyRemap.. PersonID -
myRemap.bcp'daki ikinci veri alanı üçüncü sütuna eşlenirmyRemap.. LastName -
myRemap.bcp'daki üçüncü veri alanı ikinci sütuna eşlenirmyRemap.. FirstName -
myRemap.bcp'daki dördüncü veri alanı dördüncü sütunla eşlenirmyRemap.. Gender
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 myRemap.xmlşemasını temel alan myRemapbir xml biçimi dosyası oluşturur. Buna ek olarak, niteleyici c karakter verilerini belirtmek için 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 kullanarak güvenilen bir bağlantı belirtmek için kullanılır. xml tabanlı biçim dosyası oluşturmak için x niteleyici kullanılmalıdır. Komut istemine aşağıdaki komutu girin:
bcp TestDatabase.dbo.myRemap format nul -c -x -f D:\BCP\myRemap.xml -t, -T
XML biçim dosyasını değiştirme
XML biçim dosyaları için Şema söz dizimini terminoloji için gözden geçirin. Not Defteri'nde D:\BCP\myRemap.xml açın ve aşağıdaki değişiklikleri yapın:
<FIELD>öğelerinin biçim dosyasında bildirildiği sıra, bu alanların veri dosyasında görünme sırasıdır. Bu nedenle, 2 ve 3 kimlik özniteliklerine sahip<FIELD>öğelerinin sırasını tersine çevirin.<FIELD>Kimliği öznitelik değerlerinin sıralı olduğundan emin olun.öğesindeki
<COLUMN><ROW>öğelerin sırası, toplu işlemin bunları hedefe gönderme 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. Öğelerin sırası<COLUMN>, bir<RECORD>tanımdaki öğelerin sıralamasından<FIELD>bağımsızdır. Her<COLUMN>öğesi bir<FIELD>öğesine karşılık gelir (kimliği<COLUMN>öğesinin SOURCE özniteliğinde belirtilir). Bu nedenle,<COLUMN>SOURCE değerleri düzeltme gerektiren tek özniteliklerdir. 2 ve 3<COLUMN>SOURCE özniteliklerinin sırasını tersine çevirin.
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="," MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="1" 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"/>
<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
</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="30" 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="1" 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="2" NAME="LastName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
</ROW>
</BCPFORMAT>
Değiştirilen biçim dosyası şimdi aşağıdakileri yansıtır:
- SÜTUN 1'e karşılık gelen ALAN 1,
myRemap.. PersonIDilk tablo sütununa eşlenir - SÜTUN 2'ye karşılık gelen ALAN 2, üçüncü tablo sütununa yeniden eşlenir
myRemap.. LastName - ALAN 3, SÜTUN 3'e karşılık gelen, ikinci tablo sütununa (
myRemap.. FirstName) yeniden eşlenir - SÜTUN 4'e karşılık gelen ALAN 4, dördüncü tablo sütununa eşlenir
myRemap.. Gender
Tablo sütunlarını veri dosyası alanına eşlemek için bir biçim dosyasıyla verileri içeri aktarma
Aşağıdaki örneklerde daha önce oluşturulan veritabanı, veri dosyası ve biçim dosyaları kullanılır.
bcp ve XML olmayan format dosyası kullanımı
Komut istemine aşağıdaki komutu girin.
bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.fmt -T
bcp ve XML biçim dosyasını kullanma
Komut istemine aşağıdaki komutu girin.
bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.xml -T
BULK INSERT ve XML olmayan biçim dosyası kullanma
Aşağıdaki Transact-SQL betiğini çalıştırın.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap FROM 'D:\BCP\myRemap.bcp'
WITH (FORMATFILE = 'D:\BCP\myRemap.fmt');
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
BULK INSERT ve XML biçim dosyasını kullanma
Aşağıdaki Transact-SQL betiğini çalıştırın.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap FROM 'D:\BCP\myRemap.bcp'
WITH (FORMATFILE = 'D:\BCP\myRemap.xml');
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
XML olmayan biçimli dosya ve OPENROWSET kullanma
Aşağıdaki Transact-SQL betiğini çalıştırın.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myRemap.bcp',
FORMATFILE = 'D:\BCP\myRemap.fmt'
) AS t1;
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;
OPENROWSET ve XML biçim dosyasını kullanma
Aşağıdaki Transact-SQL betiğini çalıştırın.
USE TestDatabase;
GO
TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myRemap.bcp',
FORMATFILE = 'D:\BCP\myRemap.xml'
) AS t1;
GO
-- review results
SELECT *
FROM TestDatabase.dbo.myRemap;