Aracılığıyla paylaş


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

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

Karakter biçimi, verileri başka bir programda kullanılacak bir metin dosyasına toplu dışarı aktardığınızda veya başka bir program tarafından oluşturulan bir metin dosyasından verileri toplu içeri aktardığınızda önerilir.

Karakter biçimi, tüm sütunlar için karakter veri biçimini kullanır. Veriler elektronik tablo gibi başka bir programla kullanıldığında veya verilerin Oracle gibi başka bir veritabanı satıcısının SQL Server örneğine kopyalanması gerektiğinde bilgileri karakter biçiminde depolamak yararlı olur.

Uyarı

SQL Server örnekleri arasında verileri toplu olarak aktardığınızda ve veri dosyası Unicode karakter verileri içeriyorsa ancak genişletilmiş veya DBCS karakterleri içermiyorsa, Unicode karakter biçimini kullanın. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için Unicode karakter biçimini kullanma (SQL Server).

Karakter biçimini kullanma konusunda dikkat edilmesi gerekenler

Karakter biçimini kullanırken şunları göz önünde bulundurun:

  • Varsayılan olarak, bcp yardımcı programı karakter-veri alanlarını sekme karakteriyle ayırır ve kayıtları yeni satır karakteriyle sonlandırır. Alternatif sonlandırıcıları belirtme hakkında bilgi için bkz. Alan ve satır sonlandırıcılarını belirtme (SQL Server).

  • Varsayılan olarak, karakter modu verilerini toplu dışarı veya içeri aktarma işleminden önce aşağıdaki dönüştürmeler gerçekleştirilir:

    Toplu işlemin yönü Dönüşüm
    İhracat Verileri karakter gösterimine dönüştürür. Açıkça istenirse, veriler karakter sütunları için istenen kod sayfasına dönüştürülür. Kod sayfası belirtilmezse, karakter verileri istemci bilgisayarın OEM kod sayfası kullanılarak dönüştürülür.
    İthalat Gerektiğinde karakter verilerini yerel gösterime dönüştürür ve karakter verilerini istemcinin kod sayfasından bir veya daha fazla hedef sütunun kod sayfasına çevirir.
  • Dönüştürme sırasında genişletilmiş karakterlerin kaybını önlemek için Unicode karakter biçimini kullanın veya bir kod sayfası belirtin.

  • Karakter biçiminde bir dosyada depolanan tüm sql_variant verileri meta veriler olmadan depolanır. Her veri değeri örtük veri dönüştürme kurallarına göre karakter biçimine dönüştürülür. sql_variant bir sütuna aktarıldığında veriler char olarak içeri aktarılır. sql_variant dışında bir veri türüne sahip bir sütuna aktarıldığında, veriler örtük dönüştürme kullanılarak char'dan dönüştürülür. Veri dönüştürme hakkında daha fazla bilgi için bkz. Veri türü dönüştürme (Veritabanı Altyapısı).

  • bcp yardımcı programı, para değerlerini ondalık ayırıcıdan sonra dört basamaklı karakter biçimi veri dosyaları olarak ve virgül ayırıcıları gibi herhangi bir basamak gruplandırma simgesi olmadan dışarı aktarır. Örneğin, değerini içeren 1,234,567.123456 sütunu, karakter dizesi 1234567.1235olarak bir veri dosyasına toplu olarak dışarı aktarılır.

Karakter biçimi için komut seçenekleri

Bcp, BULK INSERT (Transact-SQL) veya OPENROWSET (BULK) kullanarak karakter biçimi verilerini tabloya aktarabilirsiniz. Bcp komutu veya BULK INSERT (Transact-SQL) deyimi için, deyiminde veri biçimini belirtebilirsiniz. OPENROWSET (BULK) deyimi için, veri biçimini bir biçim dosyasında belirtmeniz gerekir.

Karakter biçimi aşağıdaki komut seçenekleri tarafından desteklenir:

Komut Seçenek Açıklama
bcp -c bcp yardımcı programının karakter verilerini kullanmasına neden olur. 1
BULK INSERT DATAFILETYPE ='char' Verileri toplu içeri aktarırken karakter biçimini kullanın.
OPENROWSET Mevcut Değil Biçim dosyası kullanılmalıdır.

1 Karakter (-c) verilerini 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.

Uyarı

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 makaledeki örnekler aşağıdaki tablo ve biçim dosyasını temel alır.

Örnek tablo

Aşağıdaki betik bir test veritabanı ve myChar adlı bir tablo 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.myChar
(
    PersonID SMALLINT NOT NULL,
    FirstName VARCHAR (25) NOT NULL,
    LastName VARCHAR (30) NOT NULL,
    BirthDate DATE,
    AnnualSalary MONEY
);

-- Populate table
INSERT TestDatabase.dbo.myChar
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.myChar;

Ö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. Daha fazla bilgi için bkz. XML dışı biçimli dosyaları kullanma (SQL Server). Aşağıdaki komut, şemasına bağlı olarak myChar.fmtXML olmayan bir biçim dosyası oluşturmak için myChar 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 istemine aşağıdaki komutu girin:

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

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

Önemli

XML olmayan biçimli dosyanızın "carriage return\line feed" karakterleriyle sona erdiğinden emin olun. Aksi takdirde aşağıdaki hata iletisini alabilirsiniz:

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, bu makalede daha önce oluşturulan veritabanı ve biçim dosyaları kullanılır.

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

-c switch ve OUT command komutunu kullanın.

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

Komut istemine aşağıdaki komutu girin:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

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

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

-c Anahtar ve IN komutu. Komut istemine aşağıdaki komutu girin:

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

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

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

Verileri XML olmayan bir biçim dosyasıyla içeri aktarmak için bcp ve karakter formatını kullanma

-c ve -f anahtarları ve IN komutu. Komut istemine aşağıdaki komutu girin:

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

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

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

Biçim dosyası olmadan BULK INSERT ve karakter formatını kullanma

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

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

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

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

XML olmayan bir dosyayla BULK INSERT ve karakter biçimi kullanma

Bu, bağımsız değişkenin FORMATFILE bir örneğidir. Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:

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

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

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

OPENROWSET ve karakter biçimini XML formatında olmayan bir dosyayla kullanın

Argümanın FORMATFILE bir örneği. Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:

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

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

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

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