Tablo Verilerini Toplu Olarak Kopyalamanın Kolay Yolu: BCP Copy Utility

Ayşegül Yiğit
BilgeAdam Teknoloji
4 min readJun 19, 2023

BCP Copy Utility, verileri bir Microsoft SQL Server örneği ile bir veri dosyası arasında kullanıcı tarafından belirtilen biçimde toplu olarak kopyalamak için kullanılan bir yardımcı programdır. Bu yardımcı program, çok sayıda yeni satırı SQL Server tablolarına almak veya tablolardan veri dosyalarına veri aktarmak için kullanılabilir. Sorgulama seçeneğiyle birlikte kullanılması dışında, Transact-SQL bilgisi gerektirmez.

Bu seride Abdullah Kise’nin eğitim verdiği “DP-203T00: Data Engineering on Microsoft Azure” başlıklı kurs içeriğini belirli konular nezdinde takip edeceğiz. Ayrıca Abdullah Kise hocama aktarmış olduğu değerli bilgilerinden dolayı teşekkür ederim.

For english please click here: https://github.com/aysegulyigitbi/SQL/blob/Easy-Way-to-Bulk-Copy-Table-Data-BCP-Copy-Utility/README.md

BCP Copy Utility, bir tabloya veri aktarmak için o tablo için oluşturulmuş bir format dosyası kullanmanızı veya tablonun yapısını ve sütunları için geçerli olan veri türlerini anlamanızı gerektirir. Bu nedenle, öncelikle verileri aktarmak istediğiniz tabloyu ve tablodaki sütunları anlamalısınız.Aşağıdaki linkten indirebilirsiniz.

Nerede yer alıyor? (cmd>Where bcp)

C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\bcp.exe

SourceDB adında bir veri tabanımız ve 2 tane tablomuzu aşağıdaki görselde görebiliyoruz.

Amacımız Sales tablosunun içeriğini dışarıya almak. Bu yüzden Exports tablosunu Truncate işlemine tabi tutuyorum.

Bu verilerin Exports tablosuna aktarılması amaçlanmamıştır. Dolayısıyla Exports tablosu içindeki verilerin Sales tablosundan etkilenmesi istenmez. Bu nedenle öncesinde Exports tablosunun içeriği “TRUNCATE” işlemiyle temizlenir. “TRUNCATE” işlemi, tablodaki tüm verileri siler ve tablonun yapısal bütünlüğünü korur. Bu işlem sonrası Exports tablosu boş hale gelir ve Sales tablosundan veri kopyalama işlemi sırasında herhangi bir çakışma oluşmaz.

BCP Copy Utility, “-c” ve “-n” parametreleri ile çalıştırılabilir. “-c” parametresi, okunabilir bir çıktı almak için kullanılırken, “-n” parametresi native çıktı almak için kullanılır.

bcp SourceDB.dbo.Sales out C:\Data\Sales.csv -c -t, -S localhost -T

Sales tablosundaki 4 satırın kopyasını aldığını görebiliriz.

Data Dosyamızın altına gittiğimizde Sales tablomuzun kopyalandığını görebiliriz.

Sales Tablosu

İlk yapmış olduğumuz işlemde tek satır ve tek kolon halinde verileri tutmuştuk ve çok kullanışlı değildi.

Normal bir tablo olarak görmek istersek bir format dosyası oluşturmamız gerekiyor.

Bu işlem için cmd’de aşağıdaki komutu çalıştırmamız gerekiyor.

bcp SourceDB.dbo.Sales format nul -f C:\Data\Sales.fmt -c -t, -S localhost -T

Data dosyamızın altında da oluşturduğumuz format dosyasını görebiliriz.

Bcp yardımcı programı, birçok farklı veri türü için destek sağlar, örneğin varchar, int, datetime ve numeric vs. Verilerin doğru biçimde aktarılması için veri türü, veri dosyasındaki sütunlarla uyumlu olmalıdır.

Verileri bir CSV dosyasına aktardıktan sonra, bu dosyayı bir görünüm aracılığıyla SQL Server veritabanına aktarabilirsiniz. Bu işlemi, “OPENROWSET” fonksiyonunu kullanarak gerçekleştirebilirsiniz.

Örneğin, “Sales” tablosundaki verileri bir görünüm aracılığıyla görüntülemek istiyorsanız, aşağıdaki komutu kullanabilirsiniz:

Sql’de de oluşturulan format dosyası üzerinden kolonlara ayrılmış formatta içeriği okuyabiliyoruz.

  • Wiev oluşturup devamlı dışarıdaki csv’leri okuyabiliriz.

— tek satır tek kolon halinde

SELECT *

FROM OPENROWSET (

BULK ‘C:\Data\Sales.csv’,

SINGLE_CLOB

) AS t1;

— -Kolonlara ayrılmış formatta

SELECT *

FROM OPENROWSET (

BULK ‘C:\Data\Sales.csv’,

FORMATFILE=’C:\Data\Sales.fmt’

) AS t1;

Bcp yardımcı programı ayrıca, bir veri dosyasının veya tablonun belirli bir aralığındaki verileri kopyalamanıza da olanak tanır.

Bcp yardımcı programı, SQL Server’a birçok veri kaynağından veri aktarmanın yanı sıra, veri dosyalarını SQL Server’a aktarmak için de kullanılabilir. Örneğin, bir veri dosyasında bulunan verileri bir SQL Server tablosuna aktarabilir veya bir SQL Server tablosundaki verileri bir veri dosyasına aktarabilirsiniz.

Özetle, bcp yardımcı programı ile SQL Server’a büyük miktarda veri aktarmanın hızlı ve kolay bir yolunu sağlar. Bu yardımcı program, çok yönlüdür ve birçok farklı veri kaynağından veya veri dosyasından veri aktarabilir. Ayrıca, verilerin doğru biçimde aktarılması için gereken veri türü ve sütun bilgilerini de sağlar.

--

--