Excel导入SqlServer数据库(二)

 上文的第一种导入方法是通过中间变量DataTable.

             本文是第二种方法.直接通过sql语句的控制将Execl写入Sql

             界面还是FileUpload和Button,通过按钮获取Excel文件路径.这里就不介绍了.详情请看Excel导入SqlServer数据库(一)逻辑层将文件路径下传给数据处理层。

            下面看D层具体做法:   

[csharp] view plain copy print ?
  1. <span style="color: rgb(0, 0, 153); font-size: 18px;">    /// <summary>  
  2.     /// 通过sql语句将Excel导入Sql  
  3.     /// </summary>  
  4.     /// <param name="strPath">Excel文件所在路径</param>  
  5.     /// <returns>bool</returns>  
  6.     public bool BatchInsertData(string strPath)  
  7.     {  
  8.         bool blnResult = false;  
  9.         //这种写法用于数据库中的表不存在,则在新建newTable表后,导入Excel中的数据.  
  10.         //  string strsql = "select * into newTable from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + "\"" + path + "\"" + ";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]";  
  11.         //这种写法用于表Table已经存在的情况下,直接导入数据.  
  12.         string strsql = "insert into Table select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=" + strPath + "',Sheet1$)";  
  13.   
  14.         //初始化连接  
  15.         string strConn = "server=192.168.*.*;database=Student;uid=sa;pwd=123";  
  16.         SqlConnection objConn = new SqlConnection(strConn);  
  17.         //打开连接  
  18.         objConn.Open();  
  19.         //执行  
  20.         SqlCommand sqlcom = new SqlCommand(strsql, objConn);  
  21.         if (sqlcom.ExecuteNonQuery() > 0)  
  22.         {  
  23.             blnResult = true;  
  24.         }  
  25.         return blnResult;  
  26.     }</span>  
    /// <summary>
    /// 通过sql语句将Excel导入Sql
    /// </summary>
    /// <param name="strPath">Excel文件所在路径</param>
    /// <returns>bool</returns>
    public bool BatchInsertData(string strPath)
    {
        bool blnResult = false;
        //这种写法用于数据库中的表不存在,则在新建newTable表后,导入Excel中的数据.
        //  string strsql = "select * into newTable from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + "\"" + path + "\"" + ";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]";
        //这种写法用于表Table已经存在的情况下,直接导入数据.
        string strsql = "insert into Table select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=" + strPath + "',Sheet1$)";

        //初始化连接
        string strConn = "server=192.168.*.*;database=Student;uid=sa;pwd=123";
        SqlConnection objConn = new SqlConnection(strConn);
        //打开连接
        objConn.Open();
        //执行
        SqlCommand sqlcom = new SqlCommand(strsql, objConn);
        if (sqlcom.ExecuteNonQuery() > 0)
        {
            blnResult = true;
        }
        return blnResult;
    }


               这种方法代码相对简单。重点就是对Sql语句的应用。

              下面总结几种比较常用的导入导出的sql语句。

                

 一,SQL SERVER 和access的数据导入导出

         1.在SQL SERVER里查询access数据:  

            SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名  

            2.将access导入SQL server

             SELECT * INTO newtable FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名

            3.将SQL SERVER表里的数据插入到Access表中

               insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" c:\DB.mdb";User ID=Admin ;Password=')...表名 (列名1,列名2) select 列名1,列名2 from sql表     

               insert into OPENROWSET  ('Microsoft.Jet.OLEDB.4.0', 'C:\db.mdb';'admin';'', Test) select id,name from Test INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名) SELECT * FROM sqltablename 

二、SQL SERVER 和EXCEL的数据导入导出

            1、在SQL SERVER里查询Excel数据:

            SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 

           

             2、将Excel的数据导入SQL server :

            SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

           

             3、将SQL SERVER中查询到的数据导成一个Excel文件 

            EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""' --参数说明:S 是SQL服务器名;U是用户;P是密码         

          举例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.Table out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'

           

            4、在SQL SERVER里往Excel插入数据: 

           insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)  

猜你喜欢

转载自2277259257.iteye.com/blog/2064959