【问题标题】:How do I UPDATE an SQL table with a sheet in excel如何在 Excel 中使用工作表更新 SQL 表
【发布时间】:2012-08-12 21:46:37
【问题描述】:

我有一些 SQL 技能,但我有一个问题: 我目前通过电子邮件收到包含 1 张信息的每月 excel 表。我需要能够使用此信息完全更新和替换 SQL Server 2008 (express) 中的表。

我试图创建一个程序来删除表并使用类似的东西重新创建它

Drop Table Utah

Create table Utah


Insert into dbo.[Utah] 
Select *    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=c:< .sxl file here>;HDR=YES', 
    'SELECT * FROM [Utah]')

但是当我尝试为此进行程序时,我没有任何运气。

每个步骤似乎都是独立的,但要简化它并让其他人也能轻松完成 - 你能帮帮我吗?

【问题讨论】:

  • 如果您想使用INSERT INTO .... 创建表 - 您应该首先确保它不存在(即DROP TABLE) - 但您应该已经尝试自己再次创建该表; INSERT INTO 会为你做这件事。
  • marc_s -- INSERT INTO 将如何创建表?

标签: sql-server-2008 excel import


【解决方案1】:

处理此问题的最佳方法是创建 SSIS 作业。

在那里,您可以自动化处理 excel 文件和刷新 sql 表等所有过程。它将非常流畅和方便。

如果 SQL Express tyr 将此代码作为 Sproc 运行

IF EXISTS(select * from sysobjects where name='Utah' and type='U')
DROP TABLE Utah
GO

Create table Utah(col1 int,col2 int)
Go

Insert into dbo.[Utah] 
Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=c:< .sxl file here>;HDR=YES', 
    'SELECT * FROM [Utah]')

Go

【讨论】:

  • SSIS 在 server 2008 express 上是否可用?当我查看安装时,我选择了 R2 包中的所有可用项目。
  • 谢谢 AnandPhadke,这似乎可行。是否可以将这种类型的 sql 语句放入存储过程中?我试过了,但在执行时它似乎不一样。
  • 从上面的代码中删除前 2 个 Go 语句。只保留最后一个 go 并将其放入 sproc 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多