乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何將Excel數(shù)據(jù)批量導(dǎo)入SQL數(shù)據(jù)庫

       昵稱282876 2010-07-25
       
      大部分人都知道用oledb來讀取數(shù)據(jù)到dataset,但是讀取之后怎么處理dataset就千奇百怪了。很多人通過循環(huán)來拼接sql,這樣做不但容易出錯而且效率低下,System.Data.SqlClient.SqlBulkCopy 對于新手來說還是比較陌生的,這個就是傳說中效率極高的bcp,6萬多數(shù)據(jù)從excel導(dǎo)入到sql只需要4.5秒。
      Code:
      using System;
      using System.Data;
      using System.Windows.Forms;
      using System.Data.OleDb;
      namespace WindowsApplication2
      {
      public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }
      private void button1_Click(object sender, EventArgs e)
      {
      //測試,將excel中的sheet1導(dǎo)入到sqlserver中
      string connString = “server=localhost;uid=sa;pwd=sqlgis;database=master”;
      System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
      if (fd.ShowDialog() == DialogResult.OK)
      {
      TransferData(fd.FileName, “sheet1″, connString);
      }
      }
      public void TransferData(string excelFile, string sheetName, string connectionString)
      {
      DataSet ds = new DataSet();
      try
      {
      //獲取全部數(shù)據(jù)
      string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” + “Data Source=” + excelFile + “;” + “Extended Properties=Excel 8.0;”;
      OleDbConnection conn = new OleDbConnection(strConn);
      conn.Open();
      string strExcel = “”;
      OleDbDataAdapter myCommand = null;
      strExcel = string.Format(”select * from [{0}$]“, sheetName);
      myCommand = new OleDbDataAdapter(strExcel, strConn);
      myCommand.Fill(ds, sheetName);
      //如果目標(biāo)表不存在則創(chuàng)建
      string strSql = string.Format(”if object_id(’{0}’) is null create table {0}(”, sheetName);
      foreach (System.Data.DataColumn c in ds.Tables[0].Columns)
      {
      strSql += string.Format(”[{0}] varchar(255),”, c.ColumnName);
      }
      strSql = strSql.Trim(’,') + “)”;
      using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString))
      {
      sqlconn.Open();
      System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();
      command.CommandText = strSql;
      command.ExecuteNonQuery();
      sqlconn.Close();
      }
      //用bcp導(dǎo)入數(shù)據(jù)
      using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
      {
      bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
      bcp.BatchSize = 100;//每次傳輸?shù)男袛?shù)
      bcp.NotifyAfter = 100;//進度提示的行數(shù)
      bcp.DestinationTableName = sheetName;//目標(biāo)表
      bcp.WriteToServer(ds.Tables[0]);
      }
      }
      catch (Exception ex)
      {
      System.Windows.Forms.MessageBox.Show(ex.Message);
      }
      }
      //進度顯示
      void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
      {
      this.Text = e.RowsCopied.ToString();
      this.Update();
      }
      }
      }
      上面的TransferData基本可以直接使用,如果要考慮周全的話,可以用oledb來獲取excel的表結(jié)構(gòu),并且加入ColumnMappings來設(shè)置對照字段,這樣效果就完全可以做到和sqlserver的dts相同的效果了。

      本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/JonesVale/archive/2009/07/13/4343247.aspx

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多