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 Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Varsayılan olarak, veriler bir tabloya aktarıldığında bcp komutu ve BULK INSERT deyimi tablodaki sütunlar için tanımlanan varsayılan değerleri gözlemler. Örneğin, veri dosyasında null bir alan varsa, bunun yerine sütunun varsayılan değeri yüklenir. bcp komutu ve BULK INSERT deyimi, null değerlerin tutulacağını belirtmenize olanak sağlar.
Buna karşılık, normal INSERT bir deyim varsayılan değer eklemek yerine null değeri korur.
INSERT ... SELECT * FROM OPENROWSET BULK deyimi, normal INSERT ile aynı temel davranışı sağlar, ancak ayrıca varsayılan değerleri eklemek için bir tablo ipucunu destekler.
Null değerleri koru
Aşağıdaki niteleyiciler, veri dosyasındaki boş bir alanın, tablo sütunları için varsayılan bir değeri (varsa) devralmak yerine toplu içeri aktarma işlemi sırasında null değerini korumasını belirtir.
OPENROWSET BULK için, toplu yükleme işleminde belirtilmeyen tüm sütunlar varsayılan olarak olarak NULLayarlanır.
| Komut | Niteleyici | Niteleyici türü |
|---|---|---|
bcp |
-k |
Şalter |
BULK INSERT |
KEEPNULLS* |
Tartışma |
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
Uygun Değil | Uygun Değil |
* BULK INSERT (Transact-SQL) için varsayılan değerler kullanılamıyorsa, tablo sütunu null değerlere izin verecek şekilde tanımlanmalıdır.
Not
Bu niteleyiciler, toplu içeri aktarma komutları tarafından bir tablodaki DEFAULT tanımlarının denetimini devre dışı bırakır. Ancak, herhangi bir eş zamanlı INSERT deyimi için DEFAULT tanımlarının beklenmesi gerekiyor.
INSERT ile Varsayılan Değerleri Kullanarak ... OPENROWSET BULK'tan * SEÇİN
Veri dosyasındaki boş bir alan için ilgili tablo sütununun varsayılan değerini (varsa) kullanmasını belirtebilirsiniz. Varsayılan değerleri kullanmak için tablo ipuçlarını kullanın.
Daha fazla bilgi için bkz. OPENROWSET BULK.
Örnek test koşulları
Örneklerde bu makalede oluşturulan veritabanı ve biçim dosyaları kullanılır.
Kod örneğinin yerel dosya konumunu makinenizdeki bir dosya konumuyla değiştirin.
Örnek Tablo
Betik, bir test veritabanı ve adlı myNullsbir tablo oluşturur. Dördüncü tablo sütunu varsayılan Kidsdeğere sahiptir. 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.myNulls (
PersonID smallint not null,
FirstName varchar(25),
LastName varchar(30),
Kids varchar(13) DEFAULT 'Default Value',
BirthDate date
);
Örnek veri dosyası
Not Defteri'ni kullanarak boş bir dosya D:\BCP\myNulls.bcp oluşturun ve aşağıdaki örnek verileri ekleyin. Üçüncü kayıt olan dördüncü sütunda değer yoktur.
1,Anthony,Grosse,Yes,1980-02-23
2,Alica,Fatnowna,No,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:
cls
# revise directory as desired
$dir = 'D:\BCP\';
$bcpFile = $dir + 'MyNulls.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,Yes,1980-02-23';
Add-Content -Path $bcpFile -Value '2,Alica,Fatnowna,No,1963-11-14';
Add-Content -Path $bcpFile -Value '3,Stella,Rosenhain,,1992-03-02';
#Review content
Get-Content -Path $bcpFile;
Invoke-Item $bcpFile;
Ö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 bcp yardımcı programını kullanarak şemasına myNulls.fmtgöre XML olmayan bir biçim dosyası myNullsoluşturur.
- Biçim dosyası oluşturmak için bcp komutu kullanmak için
formatbağımsız değişkenini belirtin ve veri dosyası yolu yerinenulkullanın. - Biçim seçeneği de bu seçeneği gerektirir
-f. -
ckarakter verilerini belirtmek için kullanılır -
t,bir alan sonlandırıcı olarak virgül belirtmek için kullanılır -
Ttü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.myNulls format nul -c -f D:\BCP\myNulls.fmt -t, -T
REM Review file
Notepad D:\BCP\myNulls.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
Biçim dosyaları oluşturma hakkında daha fazla bilgi için bkz. bcp (SQL Server) ile biçim dosyası oluşturma.
Toplu içeri aktarma sırasında null değerleri koruyun veya varsayılan değerleri kullanın
Örneklerde bu makalede oluşturulan veritabanı, veri dosyası ve biçim dosyaları kullanılır.
Bcp kullanın ve null değerleri bir biçim dosyası olmadan koruyun.
Şalter -k.
Komut istemine aşağıdaki komutu girin:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNulls;"
REM Import data
bcp TestDatabase.dbo.myNulls IN D:\BCP\myNulls.bcp -c -t, -T -k
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNulls;"
BCP'yi kullanın ve XML olmayan bir biçim dosyasıyla null değerleri koruyun.
-k ve -f anahtarlar.
Komut istemine aşağıdaki komutu girin:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNulls;"
REM Import data
bcp TestDatabase.dbo.myNulls IN D:\BCP\myNulls.bcp -f D:\BCP\myNulls.fmt -T -k
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNulls;"
Bcp ve varsayılan değerleri biçim dosyası olmadan kullanma
Komut istemine aşağıdaki komutu girin:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNulls;"
REM Import data
bcp TestDatabase.dbo.myNulls IN D:\BCP\myNulls.bcp -c -t, -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNulls;"
BCP ve varsayılan değerleri XML olmayan bir biçim dosyasıyla kullanma
Şalter -f.
Komut istemine aşağıdaki komutu girin:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNulls;"
REM Import data
bcp TestDatabase.dbo.myNulls IN D:\BCP\myNulls.bcp -f D:\BCP\myNulls.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNulls;"
BULK INSERT kullanarak ve biçim dosyası olmadan null değerleri saklama
KEEPNULLS argümanı.
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
BULK INSERT dbo.myNulls
FROM 'D:\BCP\myNulls.bcp'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
KEEPNULLS
);
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
XML formatında olmayan bir dosya kullanarak BULK INSERT ile null değerleri muhafaza etme
KEEPNULLS ve FORMATFILE argümanları.
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
BULK INSERT dbo.myNulls
FROM 'D:\BCP\myNulls.bcp'
WITH (
FORMATFILE = 'D:\BCP\myNulls.fmt',
KEEPNULLS
);
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
BULK INSERT kullanma ve varsayılan değerleri biçim dosyası olmadan kullanma
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
BULK INSERT dbo.myNulls
FROM 'D:\BCP\myNulls.bcp'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ','
);
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
XML olmayan bir biçim dosyasıyla BULK INSERT ve varsayılan değerleri kullanma
FORMATFILE argümanı.
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
BULK INSERT dbo.myNulls
FROM 'D:\BCP\myNulls.bcp'
WITH (
FORMATFILE = 'D:\BCP\myNulls.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
OPENROWSET BULK kullanma ve null değerleri XML olmayan bir biçim dosyasıyla tutma
FORMATFILE argümanı.
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
INSERT INTO dbo.myNulls
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myNulls.bcp',
FORMATFILE = 'D:\BCP\myNulls.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
OPENROWSET BULK kullanma ve varsayılan değerleri XML olmayan bir biçim dosyasıyla tutma
KEEPDEFAULTS Tablo ipucu ve FORMATFILE bağımsız değişkeni.
Microsoft SQL Server Management Studio'da (SSMS) aşağıdaki Transact-SQL yürütün:
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myNulls; -- for testing
INSERT INTO dbo.myNulls
WITH (KEEPDEFAULTS)
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myNulls.bcp',
FORMATFILE = 'D:\BCP\myNulls.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myNulls;
İlgili Görevler
Bir biçim dosyasını kullanmak için
bcp (SQL Server) ile biçim dosyası oluşturma
Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server)
Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma
Bir veri alanını atlamak için biçim dosyası kullanma (SQL Server)
Bir Tablo Sütununu Atlamak (SQL Server) İçin Biçim Dosyası Kullanma
Toplu içe veya dışa aktarma için veri biçimlerini kullanma
SQL Server'ın önceki sürümlerinden yerel ve karakter biçimi verilerini içeri aktarma
Verileri içeri veya dışarı aktarmak için karakter biçimini kullanma (SQL Server)
Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server)
Verileri içeri veya dışarı aktarmak için unicode karakter biçimini kullanma (SQL Server)
Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimi Kullanma (SQL Server)
bcp kullanırken uyumluluk için veri biçimlerini belirtmek için