我有一个Excel电子表格,我想将选择列导入我的SQL Server 2008数据库表。该向导没有提供该选项。
是否存在任何简单的代码选项?
答案 0 :(得分:50)
连接到Sql Server 2005数据库后,在“对象资源管理器”窗口中,右键单击要导入表的数据库。选择任务 - >导入数据。 这是一个简单的工具,允许您将传入的数据“映射”到适当的表中。 您可以保存脚本以在需要时再次运行。
答案 1 :(得分:24)
Microsoft suggest几种方法:
如果向导(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;
答案 2 :(得分:12)
这听起来似乎还有很长的路要走,但您可能希望使用Excel to generate INSERT SQL代码来查看分析器以创建表格。
如果你因为excel文件不在服务器上而无法使用向导,那么效果很好
答案 3 :(得分:7)
您可以使用OPENROWSET,例如:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'
只需确保路径是服务器上的路径,而不是本地计算机。
答案 4 :(得分:4)
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
答案 5 :(得分:4)
另一个选择是在Excel中使用VBA,并编写一个宏来解析电子表格数据并将其写入SQL。
这里有一个例子:http://www.ozgrid.com/forum/showthread.php?t=26621&page=1
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
答案 6 :(得分:3)
通过'wiz'我假设你在谈论'SQL Server导入和导出向导'。 (我也很新,所以我不理解大多数问题,更不用说大多数答案了,但我想我得到了这个问题)。如果是这样,你不能拿电子表格或其副本,删除你不想导入的列,然后使用向导?
我总能找到能够用它做我需要的东西而且我只在SQL Server 2000上(不确定其他版本的不同之处)。
编辑:事实上我现在正在看它,我似乎能够选择要映射到现有表中哪些行的列。在“选择源表和视图”屏幕上,我查看我正在使用的数据表,选择“目标”,然后单击“编辑...”按钮。从那里,您可以选择Excel列和表格列来将其映射到。
答案 7 :(得分:3)
如果您想要一个包含验证的桌面界面的可视化工具,您可能会喜欢这个Excel工具。您还可以使用该工具创建多用户数据编辑任务,甚至可以从任何来源将数据粘贴到SQL Server ..
如何验证Excel电子表格并将其导入SQL Server数据库:
答案 8 :(得分:2)
Microsoft Access是另一种选择。您可以在计算机上本地使用Access数据库将excel电子表格导入(可用的向导)和link to the the SQL Server database tables via ODBC。
然后,您可以在访问中设计一个查询,将Excel电子表格中的数据附加到SQL Server表。
答案 9 :(得分:1)
我用过的最好的工具是http://tools.perceptus.ca/text-wiz.php?ops=7你试过吗?
答案 10 :(得分:1)
我认为它会对你有所帮助
答案 11 :(得分:0)
导入向导确实提供了该选项。您可以使用该选项为要导入的数据编写自己的查询,也可以使用复制数据选项并使用“编辑映射”按钮忽略您不想导入的列。
答案 12 :(得分:0)
Excel + SQLCMD + Perl = exceltomssqlinsert
并且您可以使用Excel作为MSSQL数据库的前端...请注意每个生成的sql插入文件开头的truncate table ...
答案 13 :(得分:0)
答案 14 :(得分:0)
首先,尝试导入向导的32位版本。这显示了更多支持的导入格式。
背景: 全部取决于您的Office(运行时引擎)安装。
如果您没有安装Office 2007或更高版本,则导入向导(32位)仅允许您导入Excel 97-2003(.xls)文件。
如果安装了Office 2010和geater(也是64位,不推荐),则导入向导还支持Excel 2007+(.xlsx)文件。
要了解运行时的概述,请参阅'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine