运行 在尝试为测试数据库随机化客户名称时出现问题

Running into issues when trying to randomize customer names for a testing database

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

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

试试这个

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

我不能说性能,但没有比这更简单的了。 每次 运行 都会得到不同的结果。

希望对您有所帮助