当前位置: 代码迷 >> Sql Server >> 怎么批量导入EXCEL数据到SQL数据库中,且不能重复
  详细解决方案

怎么批量导入EXCEL数据到SQL数据库中,且不能重复

热度:30   发布时间:2016-04-24 08:50:33.0
如何批量导入EXCEL数据到SQL数据库中,且不能重复

'准备连接EXCEL数据库
   Dim Conn As ADODB.Connection
   Dim Res  As ADODB.Recordset
   
   Dim intExcelCount As Long
   Dim Choosed       As String
   Choosed = xWorkSheet.Name
   
   Set Conn = New ADODB.Connection
   Dim strSQL As String
   strSQL = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=""" & xApp.ActiveWorkbook.Path & "\" & xApp.ActiveWorkbook.Name & """;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=0"""
   
   Conn.Open strSQL
   Debug.Print strSQL
   
   If Err.Number <> 0 Then
      MsgBox Err.Description
      Err.Clear
      Set Conn = Nothing
      Exit Sub
   End If
   
   Dim xx As String
   'xx = "Insert Into [odbc;" & DB_CONN & "].bm_DH_ERP_MaterialCode "
   'xx = xx & " (MaterialCode,MaterialName,MaterialSpec,StartUseDate,UnitGroupName,UnitName)"
   'xx = xx & " values "
   'xx = xx & " (  Select 存货编码,存货名称,规格型号,启用日期,计量单位组名称,主计量单位名称 from [" & Choosed & "$] where logoutflag = 0)"
   'xx = xx & " (  Select * from [" & strSQL & "].[" & Choosed & "$])"
   
   '单独打开数据库查询,OK
   'xx = "select * from [odbc;" & DB_CONN & "].bm_DH_ERP_MaterialCode"
   
   'Debug.Print xx
   
   'Conn.Execute xx
   
   'If Conn.Errors.Count <> 0 Then
   '   MsgBox Conn.Errors(0).Description
   '   Err.Clear
   'End If
   
   '单独查询EXCEL表格,OK
   'xx = "Select * from [" & Choosed & "$]"
   'xx = "( Select [存货编码] as MaterialCode,[存货名称] as MaterialName,[规格型号] as MaterialSpec,[启用日期] as StartUseDate,[计量单位组名称] as UnitGroupName,[主计量单位名称] as UnitName from [" & Choosed & "$])"
   'Conn.Execute xx
   'If Conn.Errors.Count <> 0 Then
   '   MsgBox Conn.Errors(0).Description
   '   Err.Clear
   'End If
   
   xx = "Insert into [odbc;" & DB_CONN & "].bm_DH_ERP_MaterialCode"
   xx = xx & "(MaterialCode,MaterialName,MaterialSpec,StartUseDate,UnitGroupName,UnitName)" & Chr(10) & Chr(13)
   xx = xx & " ( Select [存货编码] as MaterialCode,[存货名称] as MaterialName,[规格型号] as MaterialSpec,[启用日期] as StartUseDate,[计量单位组名称] as UnitGroupName,[主计量单位名称] as UnitName from [" & Choosed & "$] as a" & Chr(10) & Chr(13)
   xx = xx & "    Where a.MaterialCode not in (Select MaterialCode from [odbc;" & DB_CONN & "].bm_DH_ERP_MaterialCode ) )"
   Debug.Print xx
   
   Conn.Execute xx
   If Conn.Errors.Count <> 0 Then
      MsgBox Conn.Errors(0).Description
      Err.Clear
   End If



在执行插入语句时,报出 ”INSERT INTO  语句的语法错误“。
------解决思路----------------------
Insert into 后跟的是表名称     

[odbc;" & DB_CONN & "].bm_DH_ERP_MaterialCode  这玩意是数据库中的表名称么,
  相关解决方案