Aracılığıyla paylaş


Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server)

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

Bu makalede, toplu içeri aktarma işlemlerinde biçim dosyasının kullanımı gösterilmektedir. Biçim dosyası, veri dosyasının alanlarını tablonun sütunlarına eşler. Ek bilgi için 'ı inceleyin; ile bcp (SQL Server) biçim dosyası oluşturun.

Önkoşullar

Örnek test koşulları

Bu konudaki biçim dosyalarına örnek olarak aşağıda tanımlanan tablo ve veri dosyası temel alınmıştır.

Örnek tablo

Aşağıdaki betik bir test veritabanı ve myFirstImportadlı bir 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 dbo.MyFirstImport (
   PersonID smallint,
   FirstName varchar(25),
   LastName varchar(30),
   BirthDate Date
   );

Örnek veri dosyası

Not Defteri'ni kullanarak boş bir dosya D:\BCP\myFirstImport.bcp oluşturun ve aşağıdaki verileri ekleyin:

1,Anthony,Grosse,1980-02-23
2,Alica,Fatnowna,1963-11-14
3,Stella,Rosenhain,1992-03-02

Alternatif olarak, veri dosyasını oluşturmak ve doldurmak için aşağıdaki PowerShell betiğini yürütebilirsiniz:

Clear-Host
# revise directory as desired

$dir = 'D:\BCP\';

$bcpFile = Join-Path -Path $dir -ChildPath 'MyFirstImport.bcp';

# Confirm directory exists

IF ((Test-Path -Path $dir) -eq 0)
{
    Write-Host "The path $dir does not exist; please create or modify the directory.";
    RETURN;
};

# Clear content, will error if file does not exist, can be ignored

Clear-Content -Path $bcpFile -ErrorAction SilentlyContinue;

# Add data

Add-Content -Path $bcpFile -Value '1,Anthony,Grosse,1980-02-23';
Add-Content -Path $bcpFile -Value '2,Alica,Fatnowna,1963-11-14';
Add-Content -Path $bcpFile -Value '3,Stella,Rosenhain,1992-03-02';

# Review content

Get-Content -Path $bcpFile;
Notepad.exe $bcpfile;

Biçim dosyalarını 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.

Kod örneğinin yerel dosya konumlarını makinenizdeki bir dosya konumuyla 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 myFirstImport.fmtxml olmayan bir biçim dosyası oluşturmak için myFirstImport kullanır.

  • Biçim dosyası oluşturmak için bcp komutunu kullanmak amacıyla bağımsız değişkeni format olarak belirtin ve veri dosyası yolu yerine nul kullanın.
  • Biçim seçeneği de bu seçeneği gerektirir -f .
  • c karakter verilerini belirtmek için kullanılır
  • t, virgül, bir alan ayırıcı olarak belirtmek için kullanılır.
  • T tümleşik güvenlik kullanarak güvenilir bir bağlantı belirtmek için kullanılır.

Komut istemine aşağıdaki komutu girin:

bcp TestDatabase.dbo.myFirstImport format nul -c -f D:\BCP\myFirstImport.fmt -t, -T

REM Review file
Notepad D:\BCP\myFirstImport.fmt

XML olmayan biçim dosyanız D:\BCP\myFirstImport.fmt aşağıdaki gibi görünmelidir:

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       11      "\r\n"   4     BirthDate              ""

Önemli

XML olmayan biçimli dosyanızın "carriage return\line feed" karakterleriyle sona erdiğinden emin olun. Aksi takdirde büyük olasılıkla aşağıdaki hata iletisini alırsınız:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

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 myFirstImport.xmlşemasını temel alan myFirstImportbir xml biçimi dosyası oluşturur.

  • Biçim dosyası oluşturmak için bcp komutunu kullanmak amacıyla bağımsız değişkeni format olarak belirtin ve veri dosyası yolu yerine nul kullanın.
  • Biçim seçeneği her zaman seçeneği gerektirir -f .
  • XML biçim dosyası oluşturmak için seçeneğini de belirtmeniz -x gerekir.
  • c karakter verilerini belirtmek için kullanılır
  • t, virgül, bir alan ayırıcı olarak belirtmek için kullanılır.
  • T tümleşik güvenlik kullanarak güvenilir bir bağlantı belirtmek için kullanılır.

Komut istemine aşağıdaki komutu girin:

bcp TestDatabase.dbo.myFirstImport format nul -c -x -f D:\BCP\myFirstImport.xml -t, -T

REM Review file
Notepad D:\BCP\myFirstImport.xml

XML biçim dosyanız D:\BCP\myFirstImport.xml aşağıdaki gibi görünmelidir:

<?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="11"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARCHAR"/>
  <COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARCHAR"/>
  <COLUMN SOURCE="4" NAME="BirthDate" xsi:type="SQLDATE"/>
</ROW>
</BCPFORMAT>

Verileri toplu içeri aktarmak için biçim dosyası kullanma

Aşağıdaki örneklerde yukarıda oluşturulan veritabanı, veri dosyası ve biçim dosyaları kullanılır.

bcp kullanma ve XML olmayan biçim dosyalarını kullanma (SQL Server)

Komut istemine aşağıdaki komutu girin:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.MyFirstImport;"

REM Import data
bcp TestDatabase.dbo.myFirstImport IN D:\BCP\myFirstImport.bcp -f D:\BCP\myFirstImport.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.MyFirstImport"

bcp ve XML biçim dosyalarını kullanma (SQL Server)

Komut istemine aşağıdaki komutu girin:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.MyFirstImport;"

REM Import data
bcp TestDatabase.dbo.myFirstImport IN D:\BCP\myFirstImport.bcp -f D:\BCP\myFirstImport.xml -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.MyFirstImport;"

BULK INSERT (Transact-SQL) ve XML dışı biçimli dosyaları (SQL Server) kullanma

Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:

USE TestDatabase;  
GO

TRUNCATE TABLE myFirstImport; -- (for testing)
BULK INSERT dbo.myFirstImport  
   FROM 'D:\BCP\myFirstImport.bcp'  
   WITH (FORMATFILE = 'D:\BCP\myFirstImport.fmt');  
GO

-- review results
SELECT * FROM TestDatabase.dbo.myFirstImport;

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 myFirstImport; -- (for testing)
BULK INSERT dbo.myFirstImport  
   FROM 'D:\BCP\myFirstImport.bcp'  
   WITH (FORMATFILE = 'D:\BCP\myFirstImport.xml');  
GO

-- review results
SELECT * FROM TestDatabase.dbo.myFirstImport;

OPENROWSET BULK (Transact-SQL) ve XML dışı 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 myFirstImport; -- (for testing)
INSERT INTO dbo.myFirstImport
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myFirstImport.bcp',
        FORMATFILE = 'D:\BCP\myFirstImport.fmt'
        ) AS t1;
GO

-- review results
SELECT * FROM TestDatabase.dbo.myFirstImport;

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 myFirstImport; -- (for testing)
INSERT INTO dbo.myFirstImport  
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myFirstImport.bcp',
        FORMATFILE = 'D:\BCP\myFirstImport.xml'  
       ) AS t1;
GO

-- review results
SELECT * FROM TestDatabase.dbo.myFirstImport;

Diğer örnekler