【发布时间】:2013-12-09 16:46:26
【问题描述】:
我正在尝试将具有多个工作表的多个 excel 文件中的数据加载到不同的 sq 服务器表中。目前我创建了一个带有 Foreach 循环容器任务的 SSIS 包,可以将多个文件中的数据加载到 1 个表中,我有多个 excel 文件,上面有 17 张不同的数据。我需要将它加载到 17 个不同的表中,因为每张表都包含不同的列。请帮我提出任何建议。
【问题讨论】:
标签: excel sql-server-2008 ssis
我正在尝试将具有多个工作表的多个 excel 文件中的数据加载到不同的 sq 服务器表中。目前我创建了一个带有 Foreach 循环容器任务的 SSIS 包,可以将多个文件中的数据加载到 1 个表中,我有多个 excel 文件,上面有 17 张不同的数据。我需要将它加载到 17 个不同的表中,因为每张表都包含不同的列。请帮我提出任何建议。
【问题讨论】:
标签: excel sql-server-2008 ssis
您想将 17 个不同的 Excel 文件加载到 17 个不同的表中吗? (如在不同的领域,不同的数据类型)那么你需要 17 个数据流。忘记 For Next 循环。
如果 Excel 文件非常相似并且它们都进入一个表,那么可能值得使用 For Each 和一些脚本。
【讨论】:
此查询使用bulk insert 将文件存储在#temptable
然后将此临时表中的内容插入到数据库中您想要的表中,但是要导入的文件是.csv。在执行此操作之前,您可以将您的 Excel 文件保存为 csv。
CREATE TABLE #temptable (col1,col2,col3)
BULK INSERT #temptable from 'C:\yourfilelocation\yourfile.csv'
WITH
(
FIRSTROW = 2,
fieldterminator = ',',
rowterminator = '0x0A'
) `
INSERT INTO yourTableInDataBase (col1,col2,col3)
SELECT (col1,col2,col3)
FROM #temptable
要自动执行此操作,您可以将上述查询放在存储过程中并使用批处理调用存储过程。编辑此代码并将其放入 textfile 并另存为 cmd
set MYDB= yourDBname
set MYUSER=youruser
set MYPASSWORD=yourpassword
set MYSERVER=yourservername
sqlcmd -S %MYSERVER% -d %MYDB% -U %MYUSER% -P %MYPASSWORD% -h -1 -s "," -W -Q "exec yourstoredprocedure"
【讨论】: