excel里有几万条数据,如何插入SQL2000,一条条插入速度太慢;另外数据库里有几万条数据导入EXCEL。注:数据库的表头与excel的表头不一样,一个是英文,一个是中文。请各位大虾赐教,本人急,谢谢了~~~我用的是VS2005 C#

解决方案 »

  1.   

    1.直接导入导出,哈哈.
    2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
                        ///*將Excel讀到DataTable方便資料篩選*/
                        //OleDbConnection OleDbConn = new OleDbConnection();
                        //OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
                        //DataTable dataTable = null;
                        //DT = new DataTable("ExcelTable");                    //OleDbConn.Open();
                        //dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        //String SheetName = "";
                        //foreach (DataRow row in dataTable.Rows)
                        //{
                        //    SheetName = row["TABLE_NAME"].ToString();
                        //    break;
                        //}
                        //OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);
                        //OleDbDA.Fill(DT);
                        //OleDbConn.Close();
                        //dataGridView1.DataSource = DT;
      

  2.   

    以下方法(以前我的项目里用到的)你试一下,手工写特环导出.速率我测了一下,很好.#region 导出Excel表
            /// <summary>
            /// 名称:WriteToExcel
            /// 功能:查询结果导出Execl
            /// 编写人:
            /// 编写时间:2008-11-26
            /// </summary>
            /// <param name="table"></param>
            public void WriteToExcel(DataTable table)
            {
                try
                {
                    string tempImagePath = Application.StartupPath;
                    string temp = tempImagePath + "\\ExeclFiles";
                    Directory.CreateDirectory(@temp);
                    string strFilePath = @Application.StartupPath + @"\ExeclFiles\" + CommonClass.CommonDateTime() + ".xls";
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath,true, System.Text.Encoding.Default);
                    object[] values = new object[table.Columns.Count];
                    for (int i = 0; i < table.Columns.Count; ++i)
                    {
                        if (table.Columns[i].Caption.ToString() == "你的英文名字")
                        {
                            table.Columns[i].Caption = "改为中文";
                        }
                        
                        sw.Write(table.Columns[i].Caption.ToString());
                        sw.Write('\t');
                    }
                    sw.Write("\r\n");
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        for (int j = 0; j < values.Length; ++j)
                        {
                            sw.Write(table.Rows[i][j].ToString());
                            sw.Write('\t');
                        }
                        sw.Write("\r\n");
                    }
                    sw.Flush();
                    sw.Close();
                    CommonClass.MessageBoxOK("成功导出[" + ds.Tables[0].Rows.Count.ToString() + "]行到Execl!");
                }
                catch
                {
                    CommonClass.MessageBoxNo("导出Execl失败!");
                }
            }
      

  3.   

    几万条数据导入EXCEL?!⊙﹏⊙b汗
      

  4.   


    导入 
    SELECT *
    FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')
    SELECT   * 
    FROM   OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',   
                'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]
    导出 如何使用BCP导出数据  
     (1) 使用BCP导出整个表或视图。 BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接 或 BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接 
      

  5.   

    用BCP把,速度超级快,100多M的csv导入也不过几秒。
    using (SqlBulkCopy bcp = new SqlBulkCopy(sqlConnString))
    {
    //一次批量的插入的数据量
    bcp.BatchSize = BatchSize;
    //超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的行都会从目标表中移除
    bcp.BulkCopyTimeout = BulkCopyTimeout; //设定通知属性,以便在每插入设定条数据时,呼叫相应事件
    bcp.NotifyAfter = NotifyAfter;
    bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); //设置要批量写入的目标表
    bcp.DestinationTableName = TableName;
    //批量写入
    bcp.WriteToServer(csvreader);
    }
      

  6.   

    excel作为数据库导入,数据大的时候,速度不怎么样把
      

  7.   

    使用sql server中的导入导出。或分多sheet,使用多线程实现导入
    还有SqlBulkCopy  批处理