尝试随机化测试数据库的客户名时遇到问题

时间:2015-01-09 16:59:56

标签: sql-server variables ssis

我目前正在尝试使用SSIS创建生产数据库的副本,重命名它,并在客户表(名字和姓氏)中随机化客户信息。这可能不是最好的方法,但我一直在尝试在生产数据库中获取所有名字,并将它们添加到名为FirstNames的单个变量中。也和LastNames一样。我设想以某种方式将这些变量在一个单独的脚本组件中分解为每种变量的某种集合。对于每个客户记录,我想从FirstNames集合中随机选择一个名字,并用这一个替换实际的名字。我也想用姓氏做同样的事情。我已经尝试使用字符串变量,并通过带有分隔符的脚本组件构建它们,并且只是在另一个脚本组件中的分隔符上进行拆分以填充集合,但构建字符串变量的过程也在采用很长,我能理解,因为我们正在谈论大约500,000个名字和姓氏。我尝试过使用对象变量,但我似乎无法弄清楚如何将所有东西从那里分解成一个集合。

我需要知道如何将对象变量分解为集合,或者更有效的方法来完成此任务。

1 个答案:

答案 0 :(得分:0)

试试这个

UPDATE a SET
    a.FirstName = (
        SELECT TOP 1 f.FirstName 
        FROM Customers f 
        WHERE f.CustomerId <> a.CustomerId
        ORDER BY NEWID()),
    a.LastName = (
        SELECT TOP 1 f.LastName 
        FROM Customers f 
        WHERE f.CustomerId <> a.CustomerId 
        ORDER BY NEWID()) 
from Customers a

我无法谈论表演,但你不能比这简单得多。 每次运行时,您都会得到不同的结果。

希望有所帮助