ExcelVBA导入Excel中数据到SQLServer中
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[方法一]
如何把EXCEL中的数据导入SQL SERVER数据库中
(2010-12-30 17:16:53)
有时候需要把E XCEL中的数据导入到数据库中。
一条一条的在数据库中建数据显然不可取,如何找一条快捷的途径进行转换是很有必要的。
在这里主要是介绍一种在EX CEL中用V BA进行编程,把EXCEL的数据转换成S QL语句,存入到一个文件中,然后在数据库服务器上提交这些SQL语句来实现。
一、两边的数据格式
(一)数据库的表结构
生成数据库表的SQL语句如下:
createtable Address
(
ID Integer identit y(1,1) not null primary key,
Name varchar(20) not null,
Dept varchar(50),
Spell varchar(20),
Mobile varchar(11),
Tel varchar(20),
EMail varchar(30),
VOIP varchar(6),
Remark varchar(200),
);
EXCEL中的数据格式
(二)转换的VBA函数
Sub Generat eSQL()
Dim i, k As Long
Dim s As String
Open "d:\txl.sql" For OutputAs #1 '打开一个文件以供输入SQL语句
i = 2
While Cells(i, 1) <> ""
s = "INSERTINTO ADDRESS (Name,Dept,Mobile,Tel,VOIP,EMail) VALUES("
For k = 1 To 5
s = s & "'" & Cells(i, k) & "',"
Next
s = s & "'" & Cells(i, 6) & "');"
Print #1, s '输出一条语句至文件
i = i + 1
Wend
Close #1 '关闭文件
End Sub
以上的代码用于逐行把数据转换成SQL语句写入“d:\txl.sql”中。
(三)导入数据库
如果导入的数据库为SQLSERVER的话,很简单,在命令行下执行:OSQL -Hhost -Usa
-Ppasswo rd -id:\txl.sql。
文件中的语句会被一一执行。
执行之后就完成数据转换的操作。
上面的这个方法还可以用于数据转换和区分数据。
适当的调整上面的语句再加上字符串函数可以实现EXC EL向任意数据文件格式转换。
并且还可以实现对数据文件进行分拆保存。
[方法二]
PublicSub 写入SQL2008()
Dim cnn As New ADODB.Connect ion
Dim SQL As String, mydataAs String, mytable As String
Dim i%
mydata= "代销销售" '指定要修改的数据库
mytable = "测试" '指定数据表
' "User ID=sa;" _ 'sa改成你SQ L账号(通常不用改)
' "Passwor d =123;" _ '123改成你S QL2008密码
' "Data Source=sowin;" _ 'sowin改成你的SQL2008的电脑名,
' 如sql2008在网络上,则sowin改成IP地址(如192.168.0.1)
' "Initial Catalog =" & mydata
'
'建立与指定SQ L Server数据库的连接
cnn.Connect ionStr ing = "Provide r=SQLOLED B;" & _
"User ID=sa;Passwor d =SA123456;Data Source=P0630;Initial Catalog =" & mydata
cnn.Open
'查询全表某些字段的记录进行更新
' For i = 2 To [a65536].End(xlUp).Row
' SQL = "UPDATE" & mytable & " SET x=" & Cells(i, 1) & "," & _
' "y=" & Cells(i, 2) & "," & _
' "z=" & Cells(i, 3) & "," & _
' "where id=11"
' Next i
'注意引号里面的空格
'数据库没有更新的数据则用I NSERTINTO
'SQL = "INSERTINTO " & mytable & " COLUMNS(x,y,z)" & _
" VALUES('" & CELLS(i,1) & "','" & cells(i,2) & "','" & cells(i,3) &"')"
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
SQL = "INSERTINTO " & mytable & _
" VALUES('" & Cells(i, 1) & "','" & Cells(i, 2) & "','" & Cells(i, 3) & "','" & Cells(i, 4) & "','" & Cells(i, 5) & "','" & Cells(i, 6) & "')"
cnn.Execute (SQL)
Next
cnn.Close
Set cnn = Nothing
End Sub。