Tag: ssis

通过SSIS转换文件扩展名

我有一个文件通过SAP后端作业传递到文件夹。 它以.MHTML文件forms提供。 我没有看到SSIS中的任何源连接将接受此扩展。 在启动SSIS包之前,如何转换此扩展名。 我只是想将其转换为.xls或.xlxs,以便我可以设置Excel源连接。 该文件保存在现有的每个月,所以不用担心文件名称的变化或类似的东西。 简单的文件来作为export.mhtml

如何在SSIS Excel Source组件中进行INNER JOIN

SELECT [Sheet1$].ID, CLng([Sheet1$].RecordID) AS RecordID, [Sheet1$].col1, [Sheet1$].col2, [Sheet1$].col3, [Sheet1$].col4, [Sheet1$].col5, [Sheet2$].Name FROM [Sheet1$] INNER JOIN [Sheet2$] ON [Sheet1$].RecordID = [Sheet2$].RecordID 我有一个SSIS Excel源组件中的上述示例SQL命令。 正如在查询中看到的,我在同一工作簿中的两个Excel工作表(Sheet1和Sheet2)上进行内部连接。 在这一点上查询执行得很好,没有任何错误。 但是,我无法join第三张(Sheet3)。 当我尝试在sheet3上进行内连接时,出现以下错误消息。 OLE DBlogging可用。 来源:“Microsoft Access数据库引擎”Hresult:0x80040E14描述:“查询expression式”[Sheet1 $]。中的语法错误(缺less运算符)RecordID INNER JOIN [Sheet3 $] ON [Sheet1 $]。 = [Sheet3 $]。RecordID' 所以我基本上无法做两个或更多的Excel表内连接。 我只能在一个excel表单上进行内部连接。 我使用的语法在SQL Server中工作,所以我想知道它是否应该在SSIS Excel源SQL命令以及它似乎是使用Microsoft Access数据库引擎工作。 下面是正在生成上述错误的第二个连接的查询: SELECT [Sheet1$].ID, CLng([Shee1$].RecordID) AS RecordID, [Sheet1$].col1, [Sheet1$].col2, […]

为什么我的派生列表式不能给我预期的结果?

我从Excel工作表中提取数据并转换并加载到Sql Server 2012 。 我正在尝试对某个列'RegistrationNumber'执行Derived Column转换。 'RegistrationNumber'的格式如下,并非全部固定长度: ###/#### ###/#### ###/#### ###/#### ###/#### ###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/#### X###/AB XYZ##/### XYZ##/### ABS###/#### ABCSEDG###FG/#### 我需要把'/'的LEFT加上一个SQL Server列,我必须把'/'的RIGHT放在SQL server的不同列中: 以下是我的derived column转换中的expression式: Derived Column: RegistrationNumber Derived Column: Replace 'RegistrationNumber' Expression: LEFT([RegistationNumber],FINDSTRING([RegistrationNumber],"/",1) – 1) Data Type: Unicode string [DT_WSTR] Length: […]

从SSIS创buildExcel图表

我有以下要求, 我必须运行一个存储过程,它实际上创build表并通过从不同地方获取值来在其中插入值。 在过程结束时,它将依次调用SSIS并从中生成一个excel文件。 到目前为止对我来说这么好,但是这个要求也build议使用excel中生成的值创build一个图表。 这是我真的很困惑如何做到这一点。 我知道可以用SSRS来完成,但是我想知道其他的方法,因为我们只有SSIS,而SSRS完全不在范围之内。 我已经尝试了各种方法(在Excel模板中已经创build了一个dynamicgraphics,并让生成的新值生成graphics,但它不能工作。:()我无法使用提供给SSIS的空的Excel模板创buildgraphics。 Excel是这里的问题,它不允许任何预定义的graphics。 它总是期望创造一个图表的价值。 我也可以去一个VBA的macros选项,(如创build一个button,让用户点击button来生成图表),但我不确定是否是一个可行的? Excel专家请帮忙! 我可能听起来像是一个业余爱好者,但请原谅我,因为我是SSIS的新手,没有一位同事知道如何去做,而且我所做的研究也得不到什么结果,这有点令人沮丧。

跳过前几行后无法预览SSIS Excel源数据

我正在使用SQL Server 2008 BIDS。 我正尝试读取具有多个工作表的Excel文件。 这些名字大多是按字母顺序排列的(很less有特殊字符“&”)。 数据从第8行开始。我通过设置Excel源的打开行集属性中的行和列来跳过空白行。 我得到确切的映射。 但是,我无法预览数据。 软件包运行成功(一切都变成绿色),但目标中没有数据。 我尝试预览时收到的错误是: 显示预览时出错。 附加信息: 索引和长度必须指向string内的一个位置。 参数名称:长度(mscorlib) 请让我知道如果我做错了什么,或者我缺less任何设置。 我提到的链接: 使用SSIS 2008将Excel导入SQL时跳过行 https://connect.microsoft.com/SQLServer/feedback/details/557049/ssis-fails-to-preview-excel-source-connector-due-to-incompatible-sheet-name 谢谢

SSIS脚本任务从Excel工作表中删除行

我有一个创build和填充Excel工作表的SSIS包,它从模板文件创build工作表。 我遇到的一个问题是,excel会改变行的格式。 我做了一个插入标题行并隐藏它的工作。 不过,我现在需要在SSIS中编写一个VB任务,用于打开Excel工作表并删除特定的行。 我看过一些在线的文章,但是一直没能find任何代码,我可以尝试和复制,我的VB知识是非常有限的,我真的很挣扎。 到目前为止,我已经想出了如何删除该行。 Sub DeleteRow1() Rows(4).Delete End Sub 不过,我需要分配文件string,并获取文件打开和closures以及…

数据stream任务与可变的来源

在一个SSIS包中,我需要将两个SQL查询的内容放在两个Excel文件中。 2个查询的结果是2个对象variables,我想知道是否可以使用数据stream任务。 问题: 我不知道我将有什么列(列的数量,列的名称),查询是在执行时创buildSet @qry = 'Select …' EXEC(@qry) 我有与Excel文件相同的问题,我不能有一个精确的模板,我所知道的Excel文件是,我们将有2张。 这可能吗? 如果没有,是否有另一种方式(脚本任务,SSRS …)?

如何使用Excel文件中的数据填充垃圾数据后清理数据库表?

我有一个包将数据从.xls文件转储到某种临时表中。 然后我需要将这些数据插入到主表中。 我正在寻找写一个sql代码的方式来摆脱暂存表中的垃圾数据。 这是xls文件的一个例子 执行我的包时,我的登台表如下所示: 之后,我运行下面的代码从statging表中删除垃圾数据: delete from StagingTable where Data IS NULL and DATA = 'Date' 这照顾到垃圾清除的具体情况。 但是,如果数据进来, xls列名称是不同的,那么我的delete语句根本无法工作 有没有解决这个问题的工作?

SSIS避免手动更改派生列expression式

我有一个SSIS包,需要运行每周的第一天,源是从Excel文件,目标是SQL表。 目前的过程是手动将空值replace为0的excel文件(这需要很多时间),所以我创build了一个包,并且正在使用派生列expression式“(Column1 ==”“?0:Column1) “,但excel文件列并不总是相同的派生列expression式,所以每次我必须运行包,我也必须编辑派生列expression式。 我正在寻找一个更好的方法来做到这一点,并避免手动。 提前致谢。

CreateObject(“Excel.Application”)不起作用

作为背景,我试图删除我的2007 Excel工作簿的第二行。 我没有MS Office安装在服务器上,安装它们是不可能的。 使用互操作程序集是没有用的,因为我不能安装Office。 当我尝试使用VB脚本(下面)来操纵文件时,它给了我各种各样的错误: Dim filename As String Dim appExcel As Object Dim newBook As Object Dim oSheet1 As Object appExcel = CreateObject("Excel.Application") filename = "C:\test.xls" appExcel.DisplayAlerts = False newBook = appExcel.Workbooks.Open(filename) oSheet1 = newBook.worksheets("Sheet1") oSheet1.Range("A2").Entirerow.Delete() newBook.SaveAs(filename, FileFormat:=56) appExcel.Workbooks.Close() appExcel.Quit() 我有点得到它,没有Excel和程序集,我不能操纵文件。 有没有其他办法可以做到这一点? 我不知道我可以尝试使用什么样的程序集。 谢谢阅读。