我有一个Excel电子表格,我想要将选定的列导入到我的SQL Server 2008数据库表中。向导没有提供这个选项。
是否存在任何简单的代码选项?
我有一个Excel电子表格,我想要将选定的列导入到我的SQL Server 2008数据库表中。向导没有提供这个选项。
是否存在任何简单的代码选项?
连接到 Sql Server 2005 数据库后,从“对象资源管理器”窗口中右键单击要导入表的数据库。选择“任务”->“导入数据”。 这是一个简单的工具,可以让您将传入的数据“映射”到适当的表中。 您可以保存脚本以便需要时再次运行。
Microsoft提供了多种方法:
如果向导(DTS)不能正常工作(我认为它应该可以),您可以尝试类似于http://www.devasp.net/net/articles/display/771.html这样的方法,基本上建议执行以下操作:
INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4])
SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4]
FROM OPENROWSET
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A;
虽然这听起来有些绕,但你可能想考虑使用 Excel 生成 INSERT SQL 代码,并将其粘贴到查询分析器中以创建表。
如果无法使用向导,因为 Excel 文件不在服务器上,这种方法也可以有效地应用。
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'
请确保路径是服务器上的路径,而不是您本地计算机上的路径。
go
sp_configure 'show advanced options',1
reconfigure with override
go
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure with override
go
SELECT * into temptable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1',
'SELECT * FROM [Sheet1$]')
select * from temptable
Sub InsertARecord()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stCon As String, stSQL As String
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY"
cnt.ConnectionString = stCon
stSQL = "INSERT INTO MyTable (Price)"
stSQL = stSQL & "VALUES (500)"
cnt.Open
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText
If CBool(rst.State And adStateOpen) = True Then rst.Close
Set rst = Nothing
If CBool(cnt.State And adStateOpen) = True Then cnt.Close
Set cnt = Nothing
End Sub