zoukankan      html  css  js  c++  java
  • 实现Excel数据导入到SQL2005中的方法(回顾)

    一、       

    在程序中,用ADO.NET。代码如下:
     
    //连接串
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + [EXCEL文件,含路径] + ";";
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open();
             
    DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"});
    DataSet ds = new DataSet();
    //一个EXCEL文件可能有多个工作表,遍历之
    foreach( DataRow dr in dtSchema.Rows )
    {
       string table = dr["TABLE_NAME"].ToString();
       string strExcel = "SELECT * FROM [" + table + "]";
       ds.Tables.Add(table);
     
       OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,conn);
       myCommand.Fill(ds,table);
    }
     
    conn.Close();
     
    这样,读取出来的数据就藏在DataSet里了。
    采用这种方式,数据库所在机器不必装有EXCEL。
     


    二、
           
    在查询分析器里,直接写SQL语句:
    如果是导入数据到现有表,则采用
    INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
    的形式
    如果是导入数据并新增表,则采用
    SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
    的形式。
     
    以上语句是将EXCEL文件里SHEET1工作表中所有的列都读进来,如果只想导部分列,可以
    INSERT INTO 表(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
     
    其实可以将OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)当成一个表,例如我就写过这样一个句子:
     
    INSERT INTO eval_channel_employee(channel,employee_id)
    SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END
    ,b.id FROM
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$) AS a,pers_employee b
    WHERE a.员工编码=b.code
     

    不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为字段名。
    这二种方式虽然非常好,但操作过程不太方便,经过测试发现在SQL2005中直接可以实现导入功能。操作过程如下:
    第一步:登录到SQL Server Management Studio,
    第二步:在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”
    第三步:在“导入向导”对话框中单击“下一步”,进入到“选择数据源”对话框,在“数据源”列表中选择“Microsoft Excel ”,同时选择相应的Excel 文档,完成后单击“下一步”(一定要勾选该对话框中的“首行包含列名称”,因此它是将Excel文档中的列标题为数据库表中的列项标题)
    第四步:指定目标数据库服务,依次单击“下一步”。。。。至到“完成”
    第五步:重新打到SQL Server Management Studio,进入到导入的数据库表,可以发现所导入的Excel文档数据。

  • 相关阅读:
    nginx开机自启动
    解决This system is not registered with RHN
    数据库琐表
    linux启动和关闭防火墙命令
    linux端口开放
    linux常用命令
    dedecms编辑器不能复制word格式的处理方法
    dede5.7 标题长度限制修改
    网站收录地址大全
    最全的各搜索引擎、各免费收录提交网站入口大全
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1829177.html
Copyright © 2011-2022 走看看