我需要创建一个将多选项卡式 Excel 电子表格导入 SQL Server 2008R2 的过程。每个选项卡将是数据库中的不同表。这需要每周进行一次,并且导入应该是自动化的。理想情况下,我想将电子表格弹出到一个文件夹中[或让一些实习生这样做],并让 sql 运行一个在此文件夹中查找的过程,并将数据添加到此数据库中的表中。我还想有另一个表来跟踪进口和日期戳它们。我真的不知道从哪里开始,因为在 tsql 方面我是一个非常大的菜鸟。
4 回答
microsoft 有一篇不错的文章 - http://support.microsoft.com/kb/321686 - 概述了所涉及的过程。
过程很简单
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]
XLImport3
您要导入的表在哪里,数据源是您要从中导入的 excel 表。
下面是将 csv 文件中的数据插入给定表的代码。我不知道项目的全部要求是什么,但如果我是你,我只会将每个表分成不同的文件,然后运行一个将数据插入每个表的 proc。
BULK
INSERT TABLE_NAME
FROM 'c:\filename.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into import_history ('filename', 'import_date') values ('your_file_name', getdate())
此外,对于跟踪导入和时间戳的表,您可以在每次批量插入之后将一些数据插入到该表中,如上所示。
此外,这里有一个链接到从 csv 文件批量插入的教程,也可能有帮助:http: //blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server -using-bulk-insert-load-comma-delimited-file-into-sql-server/
如果您仅限于TSQL
,以上两个答案将向您展示一些想法。如果您可以访问其中一个Data Tools
或Business Intelligence
,SSIS
则可以在 Excel 工作簿中的每个工作表每次都匹配的情况下自动执行此操作。使用SSIS
,您将使用数据流任务,并且每个工作表都将导入您想要的表中。下周准备好文件时,将其放入文件夹并运行SSIS
包。
但是,如果工作表名称发生变化(例如,前一周的工作表名为 Cats、Dogs、Rain,而下一周的工作表名为 Sulfur、Fire、Hell),那么这将导致包装破损。否则,如果只有工作表中的数据发生变化,那么这可以通过 SSIS 完全自动化。
示例文章:https ://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server---10-steps-to-follow/
它非常简单。右键单击Sql Server(2008)中的数据库,选择Tasks
并选择Import Data
现在更改DataSource
为Microsoft Excel
. Browse
单击按钮选择 Excel 文件的路径,然后单击Next
。
选择Sql Server instance
并选择要导入 excel 的数据库。
选择Copy data from one or more tables or views
并单击Next
。
现在选择要导入的工作表Sql Server
。
点击Next
现在点击Finish
现在向导将数据导入Excel
到Sql Server
并单击Close
。
这是桌子