【发布时间】:2013-03-20 10:48:39
【问题描述】:
我有一个包含以下列的 csv 文件:
Email | Date | Location
我几乎想将它直接放入数据库表中。问题是文件中的位置值是字符串 - 例如:“波士顿”。我要插入的表有一个整数属性LocationId。
所以,在我的数据流的中途,我需要做一个数据库查询来获取与 Location 对应的 LocationId。例如:
SELECT Id as LocationId FROM Locations WHERE Name = { location string from current csv row }
并将其作为新值“LocationId”添加到我当前的列集中。
我不知道该怎么做 - 我尝试了查找,但这意味着我必须将查找放在单独的数据流中 - 我的 csv 文件中的列似乎不可用。
我想使用缓存,因为相同的位置会重复很多次,并且我不想在不需要时为每一行运行选择。
总结:
- 如何在数据流的中途坚持查找转换(来自不同的源,sql),并将输出与 csv 派生列合并?
- 查找使用的转换是否错误?
【问题讨论】:
-
查找速度足够快且无需缓存。你不需要缓存。如果 LocationID 和 LocationName 来自同一个文件,则需要 2 个数据流和 2 个表。首先,您将在 1 个表中插入 LoactionName 和 LocationID(或生成 LoacationID)。在第二个数据流中,您将插入查找元素并通过 LocationName 获取 LocationID,并将所有内容插入到第二个表中。
-
嗯。问题是位置名称来自文件,位置 ID 来自数据库。在我从文件中读取名称之前,我无法在数据库中查找 id。
-
嗯,所以您需要先将该 LocationID 与 LocationName 合并...您使用的奇怪架构
-
不,我需要使用其中一个输入列查找附加值。
标签: sql-server visual-studio-2008 ssis