首页 文章

将Excel电子表格列导入SQL Server数据库

提问于
浏览
64

我有一个Excel电子表格,我想将选择列导入我的SQL Server 2008数据库表 . 该向导没有提供该选项 .

是否存在任何简单的代码选项?

15 回答

  • 1

    连接到Sql Server 2005数据库后,在“对象资源管理器”窗口中,右键单击要导入表的数据库 . 选择任务 - >导入数据 . 这是一个简单的工具,允许您将传入的数据“映射”到适当的表中 . 您可以保存脚本以在需要时再次运行 .

  • 0

    Microsoft suggest几种方法:

    • SQL Server数据转换服务(DTS)

    • Microsoft SQL Server 2005集成服务(SSIS)

    • SQL Server链接服务器

    • SQL Server分布式查询

    • ActiveX数据对象(ADO)和SQL Server的Microsoft OLE DB提供程序

    • ADO和Jet 4.0的Microsoft OLE DB提供程序

    如果向导(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;
    
  • 3

    这听起来似乎还有很长的路要走,但您可能希望查看使用Excel to generate INSERT SQL代码,您可以将其传递到查询分析器中以创建表 .

    如果您无法使用向导,则可以正常工作,因为excel文件不在服务器上

  • 7

    您可以使用OPENROWSET,例如:

    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0; IMEX = 1; HDR = NO; DATABASE = C:\ FILE.xls','从[Sheet1 $]选择*

    只需确保路径是服务器上的路径,而不是本地计算机 .

  • 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
    
  • 2

    另一个选择是在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
    
  • 0

    通过'wiz',我假设你在谈论'SQL Server导入和导出向导' . (我也很新,所以我不理解大多数问题,更不用说大多数答案,但我想我得到了这个问题) . 如果是这样,你不能拿电子表格或其副本,删除你不想导入的列,然后使用向导?

    我总是发现能够用它做我需要的东西而且我只在SQL Server 2000上(不确定其他版本是如何不同的) .

    编辑:事实上我现在正在看它,我似乎能够选择我想要映射到现有表中哪些行的列 . 在“选择源表和视图”屏幕上,我查看我正在使用的数据表,选择“目标”,然后单击“编辑...”按钮 . 从那里,您可以选择Excel列和表格列来映射它 .

  • 24

    如果您想要一个包含验证的桌面界面的可视化工具,您可能会喜欢这个Excel工具 . 您还可以使用该工具创建多用户数据编辑任务,甚至可以从任何源将数据粘贴到SQL Server .

    如何验证Excel电子表格并将其导入SQL Server数据库:

    http://leansoftware.net/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx

  • 1

    Microsoft Access是另一种选择 . 您可以在您的计算机上本地拥有一个Access数据库,您可以将excel电子表格导入(可用的向导)和link to the the SQL Server database tables via ODBC .

    然后,您可以在访问中设计一个查询,将Excel电子表格中的数据附加到SQL Server表 .

  • 50

    我用过的最好的工具是http://tools.perceptus.ca/text-wiz.php?ops=7你试过吗?

  • 12
  • 3

    导入向导确实提供了该选项 . 您可以使用该选项为要导入的数据编写自己的查询,也可以使用“复制数据”选项并使用“编辑映射”按钮忽略您不想导入的列 .

  • 4

    Excel SQLCMD Perl = exceltomssqlinsert

    并且您可以使用Excel作为MSSQL数据库的前端...请注意每个生成的sql插入文件开头的truncate table ...

  • 0

    我使用过DTS(现在称为SQL服务器导入和导出向导) . 我使用了这个tutorial,即使在Sql 2008和excel 2010(14.0)中也很适合我

    我希望这有帮助

    -D

  • 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

相关问题