我有文件夹,其中包含几个excel文件,所有文件都包含相同的结构。现在我需要将每个excel文件的这些excel数据加载到不同的表中,并且需要使用源excel文件名和excel的相同模式动态创建表。
类似文件A需要加载到文件表中,文件B需要加载到文件b表,并且还需要通过ssis包动态创建表,如果加载数据时一个文件中有任何错误它不应该停在那里,需要通过将错误文件保留在文件夹中来转到下一个文件。
请帮帮我......
答案 0 :(得分:1)
完全同意@ThorstenKettner。如果可能的话,将所有条目加载到一个表中,并附加一列来捕获源文件名。这将更容易构建,管理,并且至关重要的是,使用。
如果出于某种原因,您必须将每个文件分成自己的表:
第2步可能是最难的部分。一个非常粗略的陈述看起来有点像这样:
/* @FileName is passed as a parameter.
* @CreateTable is a template statement.
*/
DECLARE @FileName NVARCHAR(255) = ?
DECLARE @CreateTable NVARCHAR(255) =
'
CREATE TABLE <Replace/>
(
ID INT IDENTITY(1, 1) PRIMARY KEY,
Field1 NVARCHAR(255) NOT NULL
);
';
/* Update @CreateTable with the current table name.
*/
SET @CreateTable = REPLACE(@CreateTable, '<Replace/>', @FileName);
/* Create the new table.
*/
EXEC (@CreateTable);
进一步行动
这只是一个非常粗略的概述。每个步骤都需要进一步研究。如果您对SSIS变量和表达式不满意,则应首先研究它们(从Microsoft's Developer Network开始)。至少,您需要知道如何使用变量来更新连接的属性。
您还需要考虑如何处理已导入的文件。