我想知道在此之前是否有人遇到过类似的情况可以为我指明正确的方向..?我要补充一点,这有点令人沮丧,因为有人用包含单词“NULL”的文本字符串替换了 NULL 值 - 我需要删除它。
我有 6 个相当大的表,超过 250 多列,每列超过 100 万条记录,我需要更新 NULL 单词连续出现的列,并将其替换为适当的 NULL 值 - 问题是我有不知道这出现在哪一列。
首先,我有一些代码将列出每一列的值计数以及任何看起来比预期计数低的内容,我将运行 SQL 查询以确定该列是否包含字符串 'NULL ' 并使用以下代码,将其替换为 NULL。
declare @tablename sysname
declare @ColName nvarchar(500)
declare @sql nvarchar(1000)
declare @sqlUpdate nvarchar(1000)
declare @ParmDefinition nvarchar(1000)
set @tablename = N'Table_Name'
Set @ColName = N'Column_Name'
set @ParmDefinition = N'@ColName nvarchar OUTPUT';
set @sql= 'Select ' + @ColName + ', Count(' + @ColName + ') from ' + @tablename + ' group by ' + @ColName + ''
Set @sqlUpdate = 'Update ' + @tablename + ' SET ' + @ColName + ' = NULL WHERE '+ @ColName + ' = ''NULL'''
print @sql
print @sqlUpdate
EXECUTE sp_executesql @sql, @ParmDefinition, @ColName=@ColName OUTPUT;
EXECUTE sp_executesql @sqlUpdate, @ParmDefinition, @ColName=@ColName OUTPUT;
我尝试使用 SSIS 是遍历每一列,
Select Column_Name from Table_Name where Column_Name = 'NULL'
运行适当的查询,并执行更新。
到目前为止,我可以从Information.Schema中提取列名并从相应的表中获取记录计数,但是在运行实际的 UPDATE 语句(如上,sqlUpdate)时- 似乎没有一个组件是快乐的与查询的动态短语。
如果有记录(可能不正确),我正在使用条件拆分来确定去哪里,并且我已经尝试过OLE DB 命令进行更新。
简而言之,我想知道 SSIS 是否是这项工作的最佳工具,或者我是否找错地方了!
我正在使用 SSIS 2005,它可能有一些我还不知道的限制!
任何指导将不胜感激。
谢谢,
乔恩