Aracılığıyla paylaş


Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server)

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

Genişletilmiş/çift baytlık karakter kümesi (DBCS) karakterleri içermeyen bir veri dosyası kullanarak birden çok SQL Server örneği arasında verileri toplu olarak aktardığınızda yerel biçim önerilir.

Not

Genişletilmiş veya DBCS karakterleri içeren bir veri dosyası kullanarak SQL Server'ın birden çok örneği arasında verileri toplu olarak aktarmak için Unicode yerel biçimini kullanmanız gerekir. Daha fazla bilgi için bkz. Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimini Kullanma (SQL Server).

Yerel biçim, veritabanının yerel veri türlerini korur. Yerel biçim, SQL Server tabloları arasında yüksek hızlı veri aktarımına yöneliktir. Biçim dosyası kullanıyorsanız, kaynak ve hedef tabloların aynı olması gerekmez. Veri aktarımı iki adımdan oluşur:

  1. Verileri kaynak tablodan veri dosyasına toplu olarak dışarı aktarma

  2. Verileri veri dosyasından hedef tabloya toplu içeri aktarma

Özdeş tablolar arasında yerel biçimin kullanılması, veri türlerinin karakter biçimine ve tekrar karakter biçiminden gereksiz yere dönüştürülmesini önleyerek zamandan ve yerden tasarruf sağlar. Bununla birlikte, en iyi aktarım hızını elde etmek için veri biçimlendirmeyle ilgili birkaç denetim gerçekleştirilir. Yüklenen verilerle ilgili sorunları önlemek için aşağıdaki kısıtlamalar listesine bakın.

Sınırlamalar

Verileri yerel biçimde başarıyla içeri aktarmak için şunların olduğundan emin olun:

  • Veri dosyası yerel biçimdedir.

  • Hedef tablonun veri dosyasıyla (doğru sayıda sütun, veri türü, uzunluk, NULL durumu vb.) uyumlu olması veya her alanı ilgili sütunlara eşlemek için bir biçim dosyası kullanmanız gerekir.

    Not

    Hedef tabloyla eşleşmeyen bir dosyadan veri içeri aktarırsanız, içeri aktarma işlemi başarılı olabilir ancak hedef tabloya eklenen veri değerleri yanlış olabilir. Bunun nedeni, dosyadaki verilerin hedef tablonun biçimi kullanılarak yorumlanmış olmasıdır. Bu nedenle, herhangi bir uyuşmazlık yanlış değerlerin eklenmesine neden olur. Ancak, hiçbir koşulda böyle bir uyuşmazlık veritabanında mantıksal veya fiziksel tutarsızlıklara neden olamaz.

    Biçim dosyalarını kullanma hakkında bilgi için bkz . Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).

Başarılı bir içeri aktarma işlemi hedef tabloyu bozmaz.

bcp verileri yerel biçimde nasıl işler?

Bu bölümde, bcp yardımcı programının verileri yerel biçimde dışarı ve içeri aktarma işlemiyle ilgili önemli noktalar ele alınmaktadır.

  • Metin içermeyen veriler

    bcp yardımcı programı, SQL Server iç ikili veri biçimini kullanarak bir tablodan veri dosyasına karakter olmayan verileri yazar.

  • char veya varchar verisi

    Her char veya varchar alanının başına bcp önek uzunluğunu ekler.

    Önemli

    Yerel mod kullanıldığında, varsayılan olarak, bcp yardımcı programı SQL Server'dan aldığı karakterleri veri dosyasına kopyalamadan önce OEM karakterlerine dönüştürür. bcp yardımcı programı, bir veri dosyasındaki karakterleri bir SQL Server tablosuna toplu olarak içeri aktarmadan önce ANSI karakterlerine dönüştürür. Bu dönüştürmeler sırasında genişletilmiş karakter verileri kaybolabilir. Genişletilmiş karakterler için Unicode yerel biçimini kullanın veya bir kod sayfası belirtin.

  • sql_variant verileri

    sql_variant veriler yerel biçimli bir veri dosyasında SQLVARIANT olarak depolanıyorsa, veriler tüm özelliklerini korur. Her veri değerinin veri türünü kaydeden meta veriler, veri değeriyle birlikte depolanır. Bu meta veriler, hedef sql_variant sütununda aynı veri türüne sahip veri değerini yeniden oluşturmak için kullanılır.

    Hedef sütunun veri türü sql_variantdeğilse, her veri değeri, örtük veri dönüştürmenin normal kurallarına uyularak hedef sütunun veri türüne dönüştürülür. Veri dönüştürme sırasında bir hata oluşursa, mevcut işlem geri alınır. sql_variant sütunlar arasında aktarılan tüm karakter ve varchar değerlerinde kod sayfası dönüştürme sorunları olabilir.

    Veri dönüştürme hakkında daha fazla bilgi için bkz. Veri türü dönüştürme (Veritabanı Altyapısı).

Yerel biçim için komut seçenekleri

bcpBULK INSERT veya INSERT kullanarak yerel biçim verilerini tabloya aktarabilirsiniz... OPENROWSET(BULK...)* ÖĞESINI SEÇIN. bcp komutu veya BULK INSERT deyimi için, deyiminde veri biçimini belirtebilirsiniz. INSERT ... SELECT * FROM OPENROWSET(BULK...) deyimi için, veri biçimini bir biçim dosyasında belirtmeniz gerekir.

Yerel biçim aşağıdaki komut seçenekleriyle desteklenir:

Komut Seçenek Açıklama
bcp -n bcp yardımcı programının verilerin yerel veri türlerini kullanmasına neden olur.*
BULK INSERT DATAFILETYPE ='native' Verinin yerel veya geniş yerel veri türlerini kullanır. DATAFILETYPE bir biçim dosyası veri türlerini belirtiyorsa gerekli değildir.
OPENROWSET YOK Biçim dosyası kullanmalıdır

* Yerel (-n) verileri, SQL Server istemcilerinin önceki sürümleriyle uyumlu bir biçime yüklemek için -V anahtarını kullanın. Daha fazla bilgi için bkz. SQL Server'ın önceki sürümlerinden yerel ve karakter biçimi verilerini içeri aktarma.

Not

Alternatif olarak, biçim dosyasında alan başına biçimlendirme belirtebilirsiniz. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).

Örnek test koşulları

Örneklerde bu makalede oluşturulan veritabanı ve biçim dosyaları kullanılır.

Örnek tablo

Aşağıdaki betik, myNative adlı bir test veritabanı oluşturur ve tabloyu bazı başlangıç değerleriyle doldurur. 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.myNative ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myNative
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myNative;

ÖRNEK XML olmayan biçim dosyası

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. 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 göre myNative.fmtxml olmayan bir biçim dosyası oluşturmak için myNative kullanır. 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. Biçim seçeneği de bu seçeneği gerektirir -f . Buna ek olarak, bu örnekte niteleyici c karakter verilerini 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 isteminde aşağıdaki komutları girin:

bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T 

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

Önemli

XML olmayan biçimli dosyanızın satır başı\satır beslemesiyle 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

Örnekler

Örneklerde bu makalede oluşturulan veritabanı ve biçim dosyaları kullanılır.

Verileri dışarı aktarmak için bcp ve yerel biçimi kullanma

-n Anahtar ve OUT komutu.

Bu örnekte oluşturulan veri dosyası sonraki örneklerde kullanılacaktır.

Komut isteminde aşağıdaki komutları girin:

bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n

REM Review results
NOTEPAD D:\BCP\myNative.bcp

Biçim dosyası olmadan verileri içeri aktarmak için bcp ve yerel biçimi kullanma

-n Anahtar ve IN komutu.

Komut isteminde aşağıdaki komutları girin:

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

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n

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

Verileri XML olmayan bir biçim dosyasıyla içeri aktarmak için bcp ve yerel biçimi kullanın.

-n ve -f anahtarları ve IN komutu.

Komut isteminde aşağıdaki komutları girin:

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

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

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

BULK INSERT ve yerel formatı biçim dosyası olmadan kullanma

DATAFILETYPE argümanı.

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

TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
    FROM 'D:\BCP\myNative.bcp'
    WITH (
        DATAFILETYPE = 'native'
        );

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

BULK INSERT ve yerel biçim kullanarak, XML olmayan bir biçim dosyasıyla çalışın.

FORMATFILE argümanı.

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

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

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

XML olmayan bir biçim dosyasıyla OPENROWSET ve yerel biçim kullanma

FORMATFILE argümanı.

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

TRUNCATE TABLE TestDatabase.dbo.myNative;  -- for testing
INSERT INTO TestDatabase.dbo.myNative
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myNative.bcp', 
        FORMATFILE = 'D:\BCP\myNative.fmt'  
        ) AS t1;

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

Toplu içeri veya toplu dışarı aktarma için veri biçimlerini kullanmak için: