Asp.Net Excel’den SqlServer’a SqlBulkCopy ile Veri Aktarımı

exceltosqlserver
Bir önceki uygulamamızda Asp.Net Excel’den DataTable’a ve Access’e Bilgi Aktarımı örneğin yapmıştık şimdi ise kullanılan veritabanı SqlServer olduğu zaman nasıl bir yol izleyeceğiz ona bakalım yapacağımız işlemler belli bir yere kadar aynı şekilde devam ediyor excel dosyası yüklendikten sonra bilgileri aktarmak için SqlBulkCopy sınıfını kullanacağız uygulamanın çalışan halini konu sonundan indirebilirsiniz…
Yine ilk olarak liste ve veritabanımızı oluşturalım
exceldensqlserver
Sayfa oluşturma kodlarımız

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
     <title>www.aspnetornekleri.com Excel'den Access'e</title>
</head>
<body>
      <form id="form1" runat="server">
<div>    
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="yukleaktar" runat="server" Text="Dosya Yükle & Aktar" onclick="yukleaktar_Click" 
        />
</div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</form>
</body>
</html>

Yükleme işlemi için kodlarımızı yazmadan önce sayfamıza

using System.IO;
using System.Data.OleDb;
using System.Data;
using System.Data.SqlClient;

eklemeyi unutmuyoruz, Dosya Yükle & Aktar butonumuz için gerekli kodlar

string baglanti = "";
if (FileUpload1.HasFile)
{
string dosyaadi = Path.GetFileName(FileUpload1.PostedFile.FileName);
string dosyauzanti = Path.GetExtension(FileUpload1.PostedFile.FileName);
string dosyayeri = Server.MapPath("~/gecici/" + dosyaadi);
FileUpload1.SaveAs(dosyayeri);
//www.aspnetornekleri.com
if (dosyauzanti == ".xls")
{
baglanti = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosyayeri + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (dosyauzanti == ".xlsx")
{
baglanti = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dosyayeri + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
//www.aspnetornekleri.com
OleDbConnection bag = new OleDbConnection(baglanti);
OleDbCommand komut = new OleDbCommand();
komut.CommandType = System.Data.CommandType.Text;
komut.Connection = bag;
OleDbDataAdapter dAdapter = new OleDbDataAdapter(komut);
DataTable excelkayitlari = new DataTable();
bag.Open();
DataTable excelsayfasi = bag.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string excelsayfasininadi = excelsayfasi.Rows[0]["Table_Name"].ToString();
komut.CommandText = "SELECT * FROM [" + excelsayfasininadi + "]";
dAdapter.SelectCommand = komut;
dAdapter.Fill(excelkayitlari);
excelkayitlari.Columns[0].ColumnName = "adsoyad";
excelkayitlari.Columns[1].ColumnName = "sinif";
excelkayitlari.Columns[2].ColumnName = "numara";
bag.Close();
GridView1.DataSource = excelkayitlari;
GridView1.DataBind();
//veritabanı,tablo ismi ve sunucunuzu kendinize göre düznelemeyi unutmayın.
SqlConnection baglanti2 = new SqlConnection("server=localhost; initial catalog=aspnetornek; integrated security=true");
SqlBulkCopy kopyalama = new SqlBulkCopy(baglanti2);
//www.aspnetornekleri.com
baglanti2.Open();
kopyalama.ColumnMappings.Add("adsoyad", "adsoyad");
kopyalama.ColumnMappings.Add("sinif", "sinif");
kopyalama.ColumnMappings.Add("numara", "numara");
kopyalama.DestinationTableName = "dbo.ogrenci";
//www.aspnetornekleri.com
kopyalama.WriteToServer(excelkayitlari);
baglanti2.Close();       
File.Delete(dosyayeri);
}

Yine excel dosyamızı geçici klasörümüze yükledik daha sonra bilgileri datatable’a alarak gridview’de görüntüledik. DataTable içindeki bilgileri SqlBulkCopy sınıfı yardımıyla hızlı bir şekilde sqlserver’a aktararak çalışmamızı tamamlıyoruz.

Excel’den SqlServer’a SqlBulkCopy ile Veri Aktarımı Uygulamasını İndir!!!

exceltosqlserver

You may also like...

Subscribe
Bildir
guest
2 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Borahan

Burada exceldeki sütünlarla sqltablodaki sütunlar aynımı olmak zorunda. Excelde sütün isminden bağımsız bir şekilde ilk sheet alanını nasıl ekleyeceğiz

Ömer Gökçe

çok teşekkürler işimi gördü 🙂

2
0
Yazı hakkındaki yorum, görüş ve önerilerinizi yazınx
()
x