想要使用ssis格式的问题将excel文件数据插入到表中
我已经创build了一个SSIS包我拿'excel源'取得excel文件,但我的问题是我需要从Excel文件中取B7值,并将其插入数据库表,请帮助,因为
B7值由expression式生成:= MAX($ B $ 32:C284)
嗨,我想采取date
价值,即'93737452.52'
,和价值的NAV
'93737452.52'
并想要插入到表中我现在使用'excel source '
来取得excel文件连接'Excel source editor'
中'SQL command'
'Data access mode'
select为'SQL command'
现在我需要写什么命令来获得'date'
和'NAV'
因为我已经粘贴了excel文件的图片,请让我知道进一步的步骤。
由于您只需要电子表格中的两个非常特定的单元格值,因此我build议使用脚本组件从这些单元格中获取值,而不是使用Excel Source。 Excel Source是为了获得一堆一致排列的行和列,而不是用于拾取单个单元格。
为此,首先从工具箱的“ 数据stream转换”部分拖动一个脚本组件 。 当select脚本组件types对话框出现时,检查第一个选项“Source”。
接下来编辑这个脚本组件,从最左边的列中selectInputs&Outputs ,并添加你需要的2个输出列,并为它们设置正确的数据types。
然后单击脚本选项,select您的语言(在这种情况下,我select了Visual Basic 2008),然后单击编辑脚本button。
当IDE启动时,添加对Microsoft.Office.Interop.Excel
的引用,并在脚本的顶部为此添加一个Imports语句。 然后在CreateNewOutputRows
例程中,获取对工作簿和工作表的引用,并使用AddRow()
方法从特定的单元格中输出值。 正如你从下面的代码可以看到的,我直接从单元格b7和c7获取值并将它们转换为正确的types。
保存脚本并退出IDE,现在可以使用此脚本组件作为数据库插入的源代码:
该脚本将从您指定的单元格中只读取所需的2个值,并将它们提供给数据stream目标。
虽然这可能看起来比只在数据stream中放置Excel Source更多的工作,但它给你更多的灵活性和控制。
如果您可以修改文件,可以为单元格B7
和D7
命名(例如,您可以select名称“Date”和“NAV”)。 为此,您需要右键单击单元格,然后单击“命名一个范围”。
一旦你这样做,你可以select这些名称(“date”和“NAV”),就好像他们是你的Excel文件的工作表。 所以你可以select * from FROM [Date$]
,或者如果你select你的数据访问模式作为“表或视图”,它可以作为另一个表单提供。
如果文件的格式不固定(即引导空白的行/列),那么我build议您将列名合并成一个字段,并删除空白元素,以使SSIS变得简单。
如果文件必须维护现有格式,请将Excel源对象中的数据访问模式更改为SQL命令,然后使用类似于以下内容的内容来排除空行;
SELECT F2, F3 FROM [Sheet1$] WHERE (F2 IS NOT NULL) AND (F2 <> 'USD P&L' and F2 <> 'Date')
您将不得不使用数据转换控件来理解结果数据types。
你可以强制Excel保存为()并select.csv格式?
我相信这只会节省价值。