Aracılığıyla paylaş


Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimini Kullanma (SQL Server)

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

Bilgilerin bir Microsoft SQL Server yüklemesinden diğerine kopyalanması gerektiğinde Unicode yerel biçimi yararlı olur. Özel olmayan veriler için yerel biçimin kullanılması zaman kazandırır ve veri türlerinin karakter biçimine ve karakter biçiminden gereksiz şekilde dönüştürülmesi ortadan kaldırır. Tüm karakter verileri için Unicode karakter biçiminin kullanılması, farklı kod sayfaları kullanılarak sunucular arasında verilerin toplu aktarımı sırasında genişletilmiş karakterlerin kaybını önler. Unicode yerel biçimindeki bir veri dosyası herhangi bir toplu içeri aktarma yöntemi tarafından okunabilir.

Genişletilmiş veya DBCS karakterleri içeren bir veri dosyası kullanılarak SQL Server'ın birden çok örneği arasında verilerin toplu aktarımı için Unicode yerel biçimi önerilir. Unicode yerel biçimi, özel olmayan veriler için yerel (veritabanı) veri türlerini kullanır. karakter, nchar, varchar, nvarchar, metin, varchar(max), nvarchar(max)ve ntextgibi karakter verileri için Unicode yerel biçimi Unicode karakter veri biçimini kullanır.

Unicode yerel biçimli bir veri dosyasında SQLVARIANT olarak depolanan sql_variant verileri, yerel biçimli bir veri dosyasında olduğu gibi çalışır, ancak char ve varchar değerleri nchar ve nvarcharolarak dönüştürülür, bu da etkilenen sütunlar için gereken depolama miktarını iki katına çıkarır. Özgün meta veriler korunur ve değerler bir tablo sütununa toplu olarak aktarıldığında, char ve varchar veri türlerine geri dönüştürülür.

Unicode yerel biçimi için komut seçenekleri

Bcp, BULK INSERT veya OPENROWSET BULK kullanarak Unicode yerel biçim verilerini tabloya aktarabilirsiniz.

  • Bcp komutu veya BULK INSERT deyimi için veri biçimini belirtebilirsiniz.
  • OPENROWSET BULK deyimi için, veri biçimini bir biçim dosyasında belirtmeniz gerekir.

Unicode yerel biçimi aşağıdaki komut seçenekleriyle desteklenir:

Komut Seçenek Açıklama
bcp -N bcp Yardımcı programının, tüm karakter olmayan veriler için yerel (veritabanı) veri türlerini ve tüm karakter (karakter, nchar, varchar, nvarchar, metin ve ntext) veriler için Unicode karakter veri biçimini kullanan Unicode yerel biçimini kullanmasına neden olur.
BULK INSERT DATAFILETYPE ='widenative' Verileri toplu içeri aktarırken Unicode yerel biçimini kullanır.
OPENROWSET YOK Biçim dosyası kullanmalıdır

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ı

Bu konudaki örnekler örnek tablo myWidenative ve biçim dosyasını myWidenative.fmttemel alır. Yerel dosya yollarını sisteminizdeki yerel bir dosya yolu ile değiştirin.

Örnek tablo

Aşağıdaki betik bir test veritabanı ve myWidenative adlı bir tablo oluşturur ve tabloyu bazı başlangıç değerleriyle doldurur. Aşağıdaki Transact-SQL'i yürütür:

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myWidenative ( 
    PersonID smallint NOT NULL,
    FirstName nvarchar(25) NOT NULL,
    LastName nvarchar(30) NOT NULL,
    BirthDate date,
    AnnualSalary money
);

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

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

Ö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 myWidenative.fmtxml olmayan bir biçim dosyası oluşturmak için myWidenative 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 .
  • c karakter verilerini 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 isteminde aşağıdaki komutları girin:

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

REM Review file
Notepad D:\BCP\myWidenative.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

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

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

-N Anahtar ve OUT komutu.

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

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

bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

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

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

-N Anahtar ve IN komutu.

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

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

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

XML olmayan bir biçim dosyasıyla veri içeri aktarmak için bcp ve Unicode yerel biçimini 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.myWidenative;"

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

REM Review results is SSMS

Toplu INSERT ve Unicode yerel biçimini 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.myWidenative; -- for testing

BULK INSERT TestDatabase.dbo.myWidenative
    FROM 'D:\BCP\myWidenative.bcp'
    WITH (DATAFILETYPE = 'widenative' );

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

XML olmayan bir biçim dosyasıyla BULK INSERT ve Unicode yerel biçimi kullanma

FORMATFILE argümanı.

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

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing

BULK INSERT TestDatabase.dbo.myWidenative
   FROM 'D:\BCP\myWidenative.bcp'
   WITH ( FORMATFILE = 'D:\BCP\myWidenative.fmt'  );

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

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

FORMATFILE argümanı.

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

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing

INSERT INTO TestDatabase.dbo.myWidenative
SELECT * FROM OPENROWSET (
    BULK 'D:\BCP\myWidenative.bcp',
    FORMATFILE = 'D:\BCP\myWidenative.fmt'
) AS t1;

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

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