none
sql deki aynı tabloları excelden toplu olarak aynı anda veri kayıt ekleme! RRS feed

  • Soru

  • merhaba ; aşağıda verdiğim örnekte sql tarafında tablo1'den 2,3,4,5,6 ya kadar tablo var bu tabloların tamamı aynıdır, bunu

    excel üzerinde ilgili verilerimi girip hepsini bir seferde tablo1,2,3,4,5,6 ya kayıt etmesini istiyorum, yardımlarınız için şimdiden teşekkür ederim.Saygılar.

    ornektablo


    1 Nisan 2020 Çarşamba 18:05

Yanıtlar

Tüm Yanıtlar

  • yardımcı olabilecek varmı?

    1 Nisan 2020 Çarşamba 19:52
  • Sorunu kimsenin anladigini zannetmiyorum.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 12:56
    Yanıtlayıcı
  • Sorunu kimsenin anladigini zannetmiyorum.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

        çetin hocam yukarıda tabloyu örnek olarak vermiştim , sql server de örnek 6 adet tablom var , bu tabloda girilecek bilgiler aynı olduğundan bunu tek bir excelden verileri girerek , c# den kodlayarak  sql server deki tablolarıma kayıt etsin istiyorum.
    2 Nisan 2020 Perşembe 15:44
  • Sorunu kimsenin anladigini zannetmiyorum.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

        çetin hocam yukarıda tabloyu örnek olarak vermiştim , sql server de örnek 6 adet tablom var , bu tabloda girilecek bilgiler aynı olduğundan bunu tek bir excelden verileri girerek , c# den kodlayarak  sql server deki tablolarıma kayıt etsin istiyorum.
    Tamam, soruyu ben anlamıyorum, sansin varsa anlayan birisi çıkar.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 17:24
    Yanıtlayıcı
  • çetin hocam , belkide anlatışımda kendimi izahat edemedim. yapmak istediğim tbl100 , tbl101 , tbl102 , tbl103 , tbl104, tbl105 , tbl106

    bu tablolara excelden yazıp ilgili tablolara ayrı ayrı kayıt yapmasını istiyorum.

    6 tablomda TARIH,BELGEKODU,BELGENUMARASI,IZAHAT,ACIKLAMA,KUR,PARABIRIMI,TUTAR 

    bu kolonlarım hepsindede  aynıdır.

    2 Nisan 2020 Perşembe 17:38
  • çetin hocam tamam bu konuyu , sizin yazdığınız kodu buldum , TBL100,TBL101,TBL102,TBL103,TBL104,TBL105,TBL106   bu tablolara nasıl kodla ilave neyi yazarsak bu 6 tabloya hepsine yazsın istiyorum.

    void Main() { string sqlConnectionString = @"server=.\SQLExpress;Trusted_Connection=yes;Database=SampleDb"; string dataSource = @"c:\temp\data.xlsx"; string sheetName = "sheet1$"; using (OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + $@"Data Source={dataSource};Extended Properties=""Excel 12.0;HDR=Yes""")) using (OleDbCommand cmd = new OleDbCommand($"select * from [{sheetName}]", cn)) using (SqlConnection scn = new SqlConnection(sqlConnectionString)) { SqlBulkCopy sbc = new SqlBulkCopy(scn, SqlBulkCopyOptions.TableLock, null); sbc.ColumnMappings.Add("[Id]", "[id]"); sbc.ColumnMappings.Add("[DDC Name]", "[Hvac_DDC_Name]"); sbc.ColumnMappings.Add("[DDC Description]", "[Hvac_DDC_Description]"); sbc.ColumnMappings.Add("[System Name]", "[Hvac_System_Name]"); sbc.ColumnMappings.Add("[System Description]", "[Hvac_System_Description]"); sbc.ColumnMappings.Add("[Point Description]", "[Hvac_Point_Description]"); sbc.ColumnMappings.Add("[Field Material]", "[Hvac_Field_Material]"); sbc.ColumnMappings.Add("[AI(P)]", "[Hvac_AIP]"); sbc.ColumnMappings.Add("[AI(V)]", "[Hvac_AIV]"); sbc.ColumnMappings.Add("[DI]", "[Hvac_DI]"); sbc.ColumnMappings.Add("[AO]", "[Hvac_AO]"); sbc.ColumnMappings.Add("[DO]", "[Hvac_DO]"); cn.Open(); scn.Open(); OleDbDataReader rdr = cmd.ExecuteReader(); sbc.DestinationTableName = "HVAC"; sbc.WriteToServer(rdr); cn.Close(); scn.Close(); } }

    2 Nisan 2020 Perşembe 17:48
  • çetin hocam; bu linkte tıkla 

    birde bu linkte tıkla   paylaşımlarınızı  buldum şimdi bu paylaşımlarınıza göre 

    TBL100,TBL101,TBL102,TBL103,TBL104,TBL105,TBL106  bu tabloların adını nereye yazcam birde

    TARIH,BELGEKODU,BELGENUMARASI,IZAHAT,ACIKLAMA,KUR,PARABIRIMI,TUTAR bu kolon isimlerini nereye yazcam.

    2 Nisan 2020 Perşembe 18:19
  • Tamam iste ornekleri de bulmuşsunuz, ne diye daha bana "tıkla"tiyorsunuz? Ben yazdigim kodları biliyorum zaten.

    Onları kullanarak yazabilirsiniz. 



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 19:55
    Yanıtlayıcı
  • :)) çetin hocam elbet biliyorsunuz o sizin kodlarınıza göre  TBL100,TBL101,TBL102,TBL103,TBL104,TBL105,TBL106  bunları

    ve bunları TARIH,BELGEKODU,BELGENUMARASI,IZAHAT,ACIKLAMA,KUR,PARABIRIMI,TUTAR

    nereye yerleştireceğiz. çetin hocam :))

    2 Nisan 2020 Perşembe 20:00
  • Ilgili yerlerine.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 20:05
    Yanıtlayıcı
  • :)) , :)) , :(( ilgili yerlerine hata yapmak istemiyorum ondan , yazma şansını varmı:)) :(( 

    2 Nisan 2020 Perşembe 20:09
  • Orada kod hazır ama yetmiyor :(

    void Main()
    {
    	string sqlConnectionString = "< sql server baglanti cumlesi >"; 
    	string dataSource = "< excel dosyasinin tam adi >"; 
    	string sheetName = "< exceldeki sayfa adi >"; 
    	using (OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + $@"Data Source={dataSource};Extended Properties=""Excel 12.0;HDR=Yes"""))
    	using (OleDbCommand cmd = new OleDbCommand($"select * from [{sheetName}]", cn))
    	using (SqlConnection scn = new SqlConnection(sqlConnectionString))
    	{
    		SqlBulkCopy sbc = new SqlBulkCopy(scn, SqlBulkCopyOptions.TableLock, null);
    		sbc.ColumnMappings.Add("[< ExcelSutunAd1 >]", "[< SQLServerSutunAd1 >]");
    		sbc.ColumnMappings.Add("[< ExcelSutunAd2 >]", "[< SQLServerSutunAd2 >]");
    	    // ...
    		
    		cn.Open(); 
    		scn.Open(); 
    		OleDbDataReader rdr = cmd.ExecuteReader(); 
    		sbc.DestinationTableName = "< sql server tablo adi >"; 
    		sbc.WriteToServer(rdr); 
    		cn.Close(); 
    		scn.Close();
    	}}
    }



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 20:18
    Yanıtlayıcı
  •  "< sql server tablo adi >"; buraya

    "<TBL100>";"<TBL101>";"<TBL102>";"<TBL103>";"<TBL104>";"<TBL105>";"<TBL106>"

    tabloları böyle mi ekleyeceğiz ,

    [< ExcelSutunAd1 >] bunların yerinede

    TARIH,BELGEKODU,BELGENUMARASI,IZAHAT,ACIKLAMA,KUR,PARABIRIMI,TUTAR şunları

    yazacağız anladığım kadarıyla:)))


    2 Nisan 2020 Perşembe 20:38
  • C# bilen biri yapsın.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    2 Nisan 2020 Perşembe 20:38
    Yanıtlayıcı
  • c# nin ustası sizsiniz ; hocam yardımcı olursanızda sağolun , olmasanızda sağolun , canınız sağolsun :))   :((


    2 Nisan 2020 Perşembe 21:02
  • void Main()
    {
    	string sqlConnectionString = @"server=.\SQLExpress2012;Trusted_Connection=yes;Database=MARKET2020";
    	string path = @"C:\Users\Cetin\Documents\ExcelFill.xlsx";
    	string sheetName = "Sheet1$";
    	using (OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + $@"Data Source={dataSource};Extended Properties=""Excel 12.0;HDR=Yes"""))
    	using (OleDbCommand cmd = new OleDbCommand($"select * from [{sheetName}]", cn))
    	using (SqlConnection scn = new SqlConnection(sqlConnectionString))
    	{
    		SqlBulkCopy sbc = new SqlBulkCopy(scn, SqlBulkCopyOptions.TableLock, null);
    		sbc.ColumnMappings.Add("[< TARIH >]", "[< TARIH >]");
    		sbc.ColumnMappings.Add("[< BELGEKODU >]", "[< BELGEKODU >]");
                    sbc.ColumnMappings.Add("[< BELGENUMARASI >]", "[< BELGENUMARASI >]");
                    sbc.ColumnMappings.Add("[< IZAHAT >]", "[< IZAHAT >]");
                    sbc.ColumnMappings.Add("[< ACIKLAMA >]", "[< ACIKLAMA >]");
                    sbc.ColumnMappings.Add("[< KUR >]", "[< KUR >]");
                    sbc.ColumnMappings.Add("[< PARABIRIMI >]", "[< PARABIRIMI >]");
                    sbc.ColumnMappings.Add("[< TUTAR >]", "[< TUTAR >]");
                    
    	    // ...
    		
    		cn.Open(); 
    		scn.Open(); 
    		OleDbDataReader rdr = cmd.ExecuteReader(); 
    		sbc.DestinationTableName = "< TBL100 >";
                    sbc.DestinationTableName = "< TBL101 >";
                    sbc.DestinationTableName = "< TBL102 >";
                    sbc.DestinationTableName = "< TBL103 >";
                    sbc.DestinationTableName = "< TBL104 >";
                    sbc.DestinationTableName = "< TBL105 >";
                    sbc.DestinationTableName = "< TBL106 >";
    		sbc.WriteToServer(rdr); 
    		cn.Close(); 
    		scn.Close();
    	}}
    }

    2 Nisan 2020 Perşembe 21:32
  • Bu calismaz.

    1) sbc.DestinationTableName bir tane olmalı.

    2) Isimlendirmelerin hepsi yanlış gibi. Ornegin tablo adin < TBL100 > ise, onu [< TBL100 >] diye yazmalısın. Ama tablo adinin < TBL100 > oldugunu sanmam, muhtemelen sadece TBL100'dur.

    3) Sizin .\SQLExpress2012 diye bir SQL Server sunucunuz, makinenizde c:\Users\Cetin diye bir klasörünüz mu var???

    Bu kadarcık T-SQL, C#, dosya sistemi bilmiyorsanız, SQL veritabanına dokunmayınız.




    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    3 Nisan 2020 Cuma 12:35
    Yanıtlayıcı