2013-09-30 131 views
1

我有两个数据库,数据库A和数据库B的表迭代SQL服务器:通过城市名称

数据库A包含一些数据需要被放置在一个表中数据库b从现场数据子但是,在这之前,必须按照以下方式“清理”一些数据:

包含要放入数据库B中的数据的数据库A中的表具有名为“Desc”的字段。系统的用户不时地将城市名称输入到“Desc”字段中。例如:用户可以键入“将家具移动到新的隔间。纽约。添加电“。

在将数据导入到数据库B之前,需要从该数据中删除单词”New York“,以便它只读取”将家具移动到新的隔间。加电“。但是 - 这很重要 - 数据库A中的原始数据必须保持不变。换句话说,数据库A的数据仍然会显示为“将家具移动到新的隔间。纽约。添加电动“,而数据库B中的数据将显示为”将家具移动到新的隔间。添加电。”

数据库B包含有哪些需要予以除名城市的名单表‘被放置在数据库B之前,从数据库A说明’栏数据

我如何构建一个存储过程或函数,它将抓取来自数据库A的数据,然后迭代数据库B中的Cities表格,并且如果它在“Desc”字段中找到城市名称将移除它,同时保留该字段中的其余信息从而创建一个记录集,然后我可以使用它来填充数据库B中的相应表格?

我已经尝试了几件事,但仍然没有破解它。但我相信这可能相当简单。任何帮助是极大的赞赏!

谢谢。

编辑:

我试图解决这个问题的最新的东西是这样的:

DECLARE @cityName VarChar(50) 

While (Select COUNT(*) From ABCScanSQL.dbo.tblDiscardCitiesList) > 0 

Begin 

Select @cityName = ABCScanSQL.dbo.tblDiscardCitiesList.CityName FROM ABCScanSQL.dbo.tblDiscardCitiesList 

SELECT JOB_NO, LTRIM(RTRIM(SUBSTRING(JOB_NO, (LEN(job_no) -2), 5))) AS LOCATION 
     ,JOB_DESC, [Date_End] , REPLACE(Job_Desc,@cityName,' ') AS NoCity 
     FROM fmcs_tables.dbo.Jobt WHERE Job_No like '%loc%' 
End 

“Job_Desc”是需要有删除的城市名的领域。

+0

你不想在你的文章中添加这些*几件事*。 –

+0

你有这些项目(城市名称)将被替换的列表?它存储在一个表中吗? – mhn

回答

0

这是一个数据质量问题。您可以随时复制数据库A中的[描述]并将其称为[cleared_desc]。

一个简单的解决方案是编写一个执行以下操作的函数。

1 - 从[tbl_remove_these_words]中读取数据。这些是你想要删除的短语。

2 - 将输入 - @var_description与表中的行进行比较。

3 - 匹配时,替换为空字符串。

此解决方案取决于您维护和更新的清理表。

运行更新查询,该查询使用来自[description]的输入并调用[fn_remove_these_words]并将[cleared_desc]设置为输出。

另一种解决方案是查看SSIS中的Melisa Data(DQ)产品或SQL服务器堆栈中的数据质量服务等产品,为您提供解决问题的应用程序框架工作。

相关问题