IRONSOFTWAREHOME
IRONXL KULLANARAK

C# Dilinde CSV Dosyasından Veri Okuma ve Veritabanına Kaydetme

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

Günümüzün dijital dünyasında verileri etkili bir şekilde yönetmek önemli bir görevdir. Yazılım geliştirmede yaygın bir gereksinim, bir veritabanında saklanmak üzere CSV dosyasından veri okumaktır. Bu eğitim C# kullanarak, özellikle IronXL kütüphanesini kullanarak CSV dosyasından veri okuma ve SQL Server veritabanına kaydetme adımlarını kapsar. Bu kılavuz, başlangıç seviyesindekiler için tasarlanmış ve basit, ilgi çekici bir şekilde açıklanacaktır.

Temelleri Anlamak

CSV Dosyası Nedir?

CSV (Comma-Separated Values) dosyası, verilerin virgüllerle ayrıldığı bir düz metin dosyasıdır. Basitliği ve Excel gibi çeşitli uygulamalarla uyumluluğu nedeniyle veri aktarmak için popüler bir formattır.

SQL Server ve Veritabanlarının Rolü

SQL Server, Microsoft tarafından geliştirilmiş bir veritabanı yönetim sistemidir. Verileri düzenli bir şekilde depolamak ve yönetmek için kullanılır. Bizim durumumuzda, CSV verilerini bir SQL Server tablosunda depolayacağız.

IronXL'e Giriş

IronXL, .NET uygulamaları için özel olarak tasarlanmış bir Excel kütüphanesidir ve geliştiricilere Excel dosyalarını okumak, oluşturmak ve düzenlemek için Microsoft Office Interop'a ihtiyaç duymadan olanak tanır. Bu kütüphane, .NET Core, .NET Standard ve .NET Framework gibi çeşitli .NET sürümleri ve platformları ile uyumluluğu ve Windows, Linux ve macOS gibi farklı işletim sistemlerini desteklemesiyle öne çıkar. Özellikle CSV dosyalarını işlemek için güçlü bir kütüphanedir.

How to Read and Store Data From CSV Files in C#

  1. Visual Studio'da bir C# konsol programı oluşturun.
  2. NuGet Paket Yöneticisi'ni kullanarak CSV kütüphanesini yükleyin.
  3. Programda kütüphaneyi kullanarak CSV dosyasını yükleyin.
  4. Veritabanı ile bir bağlantı oluşturun.
  5. Kütüphaneyi kullanarak CSV dosyasından içerik okuyun.
  6. Bu içeriği SqlBulkCopy yöntemi kullanarak veritabanına kopyalayın.

İşte bir örnek kod parçası:

using System;
using System.Data;
using System.Data.SqlClient; // For .NET Core/.NET 5+, use Microsoft.Data.SqlClient instead
using System.Globalization;
using System.IO;
using CsvHelper;

namespace CsvReader
{
    class Program
    {
        static void Main(string[] args)
        {
            string csvPath = @"path\to\your\csv\file.csv";

            using (var reader = new StreamReader(csvPath))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                // Mapping the CSV data to the corresponding model
                var records = csv.GetRecords<YourModel>();

                using (var sqlBulkCopy = new SqlBulkCopy("your_connection_string"))
                {
                    sqlBulkCopy.DestinationTableName = "YourTableName";
                    sqlBulkCopy.WriteToServer(records.AsDataReader());
                }

                Console.WriteLine("Data imported successfully!");
            }
        }
    }

    // Define your model that maps to the CSV columns
    public class YourModel
    {
        // Define properties here representing the CSV columns
    }
}

"path\to\your\csv\file.csv" yerine CSV dosyanızın gerçek yolunu, YourModel yerine CSV verinizi temsil eden modeli, "your_connection_string" yerine veritabanı bağlantı dizesini ve "YourTableName" yerine veritabanı tablonuzun adını koyduğunuzdan emin olun.

Ortamı Ayarlama

Ön Koşullar

  1. Visual Studio: Visual Studio'nun yüklü olduğundan emin olun.
  2. SQL Server: SQL Server'ın yüklü ve erişilebilir olduğundan emin olun.
  3. IronXL Yükleme: IronXL'i aşağıdaki NuGet komutunu çalıştırarak yükleyin:

dotnet add package IronXL.Excel

IronXL'i yüklemek istediğiniz proje dizininde bu komutları çalıştırdığınızdan emin olun.

SQL Server Tablosu Oluşturma

Veri aktarma işleminden önce, SQL Server veritabanınızda bir hedef tablo oluşturun. Bu tablo, CSV verilerini saklayacaktır.

CREATE TABLE YourTableName (
    Column1 DataType,
    Column2 DataType,
    ...
);
Text

YourTableName, Column1, Column2 ve DataType yerlerine kendi detaylarınızı koyun.

CSV Verilerini Adım Adım Aktarma Kılavuzu

  1. Öncelikle, aktarmak istediğiniz verileri içeren bir CSV dosyasına sahip olduğunuzdan emin olun.

  2. Visual Studio'da yeni bir C# konsol uygulama projesi oluşturun.

  3. CSV dosyalarını okumak için CsvHelper NuGet paketini yükleyin. Bunu, Visual Studio'da NuGet Paket Yöneticisi Konsolu'nu açarak ve aşağıdaki komutu çalıştırarak yapabilirsiniz:

    Install-Package CsvHelper
    SHELL
  4. C# kod dosyanızın üst kısmına gerekli using ifadelerini ekleyin:

    using System;
    using System.IO;
    using System.Globalization;
    using CsvHelper;
    using System.Data.SqlClient; // For .NET Core/.NET 5+, use Microsoft.Data.SqlClient instead
  5. Kodunuzda, CSV dosyanızın yolunu belirtin. Örnek:

    string csvFilePath = @"C:\path\to\your\csv\file.csv";

    C:\path\to\your\csv\file.csv yerine CSV dosyanızın gerçek yolunu koyduğunuzdan emin olun.

  6. CSV dosyasını okumak için StreamReader sınıfının yeni bir örneğini oluşturun:

    using (var reader = new StreamReader(csvFilePath))
    {
        // code goes here
    }
  7. StreamReader nesnesini geçirerek CsvReader sınıfının yeni bir örneğini oluşturun:

    using (var reader = new StreamReader(csvFilePath))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        // code goes here
    }
  8. Gerekli ayarları yapmanız gerekiyorsa CsvConfiguration nesnesini kurucusuna geçirerek CsvReader yapılandırın. Örneğin:

    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        HasHeaderRecord = true,
    };
    using var csv = new CsvReader(reader, config);
  9. CSV verisini bir nesne koleksiyonuna okumak için CsvReader nesnesinin GetRecords<t>() yöntemini kullanın. CSV dosyasındaki her kaydı temsil eden nesne tipini <t> ile değiştirin. Örneğin:

    var records = csv.GetRecords<YourModel>();

    Model sınıfınızın gerçek adını YourModel ile değiştirdiğinizden emin olun.

  10. Kayıtlar üzerinde gezin ve gerekli işlem veya doğrulamaları yapın:

    foreach (var record in records)
    {
        // Process each record as needed
    }
  11. Opsiyonel olarak, ADO.NET veya Entity Framework gibi bir ORM aracı kullanarak SQL Server veritabanınıza bir bağlantı kurun.

  12. Her kaydı seçtiğiniz veritabanı erişim mekanizmasını kullanarak veritabanına ekleyin. Örneğin, ADO.NET kullanıyorsanız, verileri verimli bir şekilde toplu eklemek için SqlBulkCopy sınıfını kullanabilirsiniz.

  13. İçe aktarma işlemi sırasında oluşabilecek tüm istisnaları ele alın ve uygun hata mesajları veya günlüklemeler sağlayın.

  14. Uygulamanızı çalıştırarak ve CSV verilerinin veritabanınıza başarıyla aktarıldığını doğrulayarak uygulamanızı test edin.

Hepsi bu kadar! Artık C# kullanarak CSV verilerini SQL Server veritabanınıza başarıyla aktardınız.

Adım 1: CSV Dosyasını Okuma

CSV dosyasından veri aktarımı görevine başlarken, ilk önemli adım içindeki verileri doğru bir şekilde okumaktır. Bir CSV dosyasındaki her satır tipik olarak bir veri kaydını temsil eder ve her kayıt, virgülle ayrılmış bir veya daha fazla alandan oluşur.

Daha sonra, CSV dosyasıyla başa çıkmak için IronXL kütüphanesini kullanırız. IronXL kullanarak CSV dosyasını okumak için WorkBook ve WorkSheet sınıflarını kullanacaksınız. WorkBook sınıfı, bir Excel dosyası veya bizim durumda bir CSV dosyası olabilecek tüm bir elektronik tabloyu temsil eder. CSV dosya yolunu bir WorkBook nesnesine yüklediğinizde, IronXL CSV dosyasını elektronik tablo/veri tablosu olarak kabul eder.

using IronXL;
using System.Data;

public class CSVReader
{
    // Reads a CSV file and converts it to a DataTable
    public DataTable ReadCSV(string filePath)
    {
        WorkBook workbook = WorkBook.Load(filePath);
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert to DataTable for easier processing
        DataTable dataTable = sheet.ToDataTable(true); // Set to 'true' if your CSV has a header row
        return dataTable;
    }
}

Adım 2: Veritabanı Bağlantısını Kurma

CSV verilerinizi saklama sürecinde SQL Server veritabanınıza bir bağlantı kurmak temel bir adımdır. Bu adım, uygulamanız ile veritabanı sunucusu arasında bir iletişim bağlantısı kurmayı içerir. Başarılı bir bağlantı çok önemlidir çünkü olmadan veritabanına veri aktarımı imkansız olur.

Bu adım, C#'da bir bağlantı dizgesi kullanarak bir bağlantı oluşturma ve açma üzerine yoğunlaşır. Bağlantı dizesi, bağlantının kurulması için gereken bilgileri içerdiğinden hayati bir bileşendir. Veritabanınıza açılan kapının anahtarı gibidir.

using System.Data.SqlClient; // For .NET Core/.NET 5+, use Microsoft.Data.SqlClient instead

public class DatabaseConnector
{
    // Connection string to connect to the database
    private string connectionString = "your_connection_string_here";

    public SqlConnection ConnectToDatabase()
    {
        SqlConnection connection = new SqlConnection(connectionString);
        connection.Open();
        return connection;
    }
}

connectionString değişkeni, SQL Server'a bağlanmak için gerekli tüm detayları barındırır. Genellikle sunucu adı, veritabanı adı, kullanıcı kimliği ve şifreyi içerir. Örnek bir bağlantı dizesi şöyle görünür: Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;. Bu yer tutucularını gerçek sunucu ayrıntılarınızla değiştirmeniz çok önemlidir.

Adım 3: Veritabanında Veri Depolama

SQL Server veritabanıyla bir bağlantı kurduktan sonra, bir sonraki önemli adım CSV verilerini veritabanına kaydetmektir. Bu adım, okuduğunuz ve işlediğiniz verileri SQL Server tablonuza aktarmayı içerir. Yerel bir dosyadan bir veritabanı sunucusuna gerçek veri göçünü içerdiğinden veri işleme sürecinin önemli bir parçasıdır.

Bu adımda, artık bir DataTable içinde depolanan CSV verisinin SQL Server veritabanına nasıl aktarıldığına odaklanacağız. Bu görevi verimli bir şekilde gerçekleştirmek için C# ve SQL Server özelliklerinin bir kombinasyonunu kullanıyoruz.

using System;
using System.Data;
using System.Data.SqlClient; // For .NET Core/.NET 5+, use Microsoft.Data.SqlClient instead

public class DataImporter
{
    public void ImportData(DataTable dataTable)
    {
        using (SqlConnection connection = new DatabaseConnector().ConnectToDatabase())
        {
            // Check if the table exists and create it if it does not.
            string tableName = "CSVData"; // Use a valid SQL table name format
            string checkTable = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN ";
            string createTable = "CREATE TABLE " + tableName + " (";
            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                createTable += $"[{dataTable.Columns[i].ColumnName}] NVARCHAR(MAX)";
                if (i < dataTable.Columns.Count - 1)
                    createTable += ", ";
            }
            createTable += ") END";
            SqlCommand createTableCommand = new SqlCommand(checkTable + createTable, connection);
            createTableCommand.ExecuteNonQuery();

            // Now we use SqlBulkCopy to import the data
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                bulkCopy.DestinationTableName = tableName;
                try
                {
                    bulkCopy.WriteToServer(dataTable);
                    Console.WriteLine("Data imported successfully!");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
}

SQL Server veritabanına bağlantı açılarak başlar, DatabaseConnector sınıfını kullanarak veri işlemleri için bir yol sağlar. Yöntem, veritabanı içinde CSVData adlı tablonun varlığını kontrol eder.

Eğer tablo bulunmazsa, onu oluşturmak için devam eder. Tablonun şeması, yönteme geçirilen DataTable şemasına dayanarak oluşturulur, tüm sütunlar herhangi bir metin verisine uyum sağlamak için NVARCHAR(MAX) olarak ayarlanır. Bu, genel bir yaklaşımdır ve belirli veri türlerini daha yakından eşleştirmek için iyileştirme gerektirebilir.

Ardından, tablonun varlığını doğrulamak ya da tabloyu oluşturmak için bir SQL komutu oluşturulup yürütülür. Bu, sonraki toplu kopyalama işleminin veri ekleme için hazır bir hedef tabloya sahip olmasını sağlar. Tablo hazır olduğunda, SqlBulkCopy sınıfı kullanılarak veriler DataTable'dan doğrudan SQL Server tablosuna aktarılır. Bu işlem, büyük veri hacimlerini verimli bir şekilde işlemek için tasarlanmış yüksek performanslı toplu veri aktarımları için tasarlanmıştır.

Adım 4: Özetlemek

Önceki aşamalarda CSV verileri okumak, veritabanı bağlantısı kurmak ve veriyi aktarmak için hazırlanmak konusunda özenle çalıştıktan sonra, bu bireysel bileşenleri tutarlı bir süreçte entegre ettiğimiz son ve çok kritik aşamaya geliyoruz.

Bu entegrasyon, C# uygulamanızın Main yönteminde yapılır ve burada her şey bir araya gelerek CSV dosyasından SQL Server veritabanına veri aktarımının gerçek yürütülmesini mümkün kılar.

class Program
{
    static void Main(string[] args)
    {
        string filePath = "path_to_your_csv_file.csv";
        CSVReader reader = new CSVReader();
        DataTable dataTable = reader.ReadCSV(filePath);
        DataImporter importer = new DataImporter();
        importer.ImportData(dataTable);
        Console.WriteLine("Data imported successfully!");
    }
}

CSV dosyanızın yolunu path_to_your_csv_file.csv ile değiştirin.

Projeyi Çalıştırma

Projeyi çalıştırdığınızda aşağıdaki çıktıyı göreceksiniz. Başarı mesajları, tüm işlemlerin başarılı bir şekilde yürütüldüğünü ve verilerin veritabanına kopyalandığını gösterir.

Data imported successfully!
Text

Şimdi SQL Server Management Studio'yu (SSMS) açabilir ve veritabanındaki tabloyu kontrol edebilirsiniz. Tablodaki verileri şu şekilde göreceksiniz.

CSV Dosyasından Veri Okuma ve Veritabanına Depolama C#: Şekil 1 - Çıktı veritabanı

Sonuç

Bu öğretici sizi, C# kullanarak bir CSV dosyasından veri okuma ve bunu bir SQL Server veritabanında depolama sürecinde yönlendirdi. Bu adımları takip ederek ve IronXL kütüphanesini kullanarak, C# uygulamalarınızdaki CSV verilerini verimli bir şekilde yönetebilirsiniz.

IronXL, kullanıcıların satın almadan önce özelliklerini deneyimlemeleri için ücretsiz bir deneme sürümü sunar. Bu tam donanımlı deneme, potansiyel kullanıcıların ürünü canlı bir ortamda test etmelerine ve değerlendirmelerine olanak tanır, üretimde su izi olmadan. Deneme süresinden sonra, projeleriniz için IronXL kullanmaya devam etmeye karar verirseniz, ürünün lisanslaması $999'dan başlar.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez