Ale*_*lex 32 sql sql-server dummy-data
用虚拟数据填充SQL表的最快方法是什么?
我有一个包含大约40个不同类型字段(int,bit,varchar等)的宽表,需要进行一些性能测试.我正在使用SQL Server 2008.
谢谢!
wit*_*rup 45
推荐免费的GNU许可随机自定义数据生成器http://www.generatedata.com/
小智 10
迟到的答案但对此线程的其他读者可能有用.除了其他解决方案,我建议使用SSMS或自定义SQL导入脚本程序从.csv文件导入数据.有关如何执行此操作的分步教程,因此您可能需要查看它:http://solutioncenter.apexsql.com/how-to-generate-randomized-test-data-from-a- CSV文件/
请注意,使用SSMS或自定义SQL导入脚本导入.csv文件比手动创建SQL插入更容易,但是存在一些限制,如教程中所述:
如果需要填充数千行,并且.csv文件包含几百行数据,那就不够了.解决方法是反复重新导入相同的.csv文件,直到需要为止.这种方法的缺点是它会插入具有相同数据的大块行,而不会随机化它们.
本教程还介绍了如何使用名为ApexSQL Generate的第三方SQL数据生成器.该工具具有集成功能,可从导入的.csv格式文件生成大量随机数据.应用程序具有功能齐全的免费试用版,因此您可以下载并试用它以查看它是否适合您.
您只需要Go 1000在INSERT之后填充1000次,就像这样:
INSERT INTO dbo.Cusomers(Id, FirstName, LastName) VALUES(1, 'Mohamed', 'Mousavi')
GO 1000
Run Code Online (Sandbox Code Playgroud)
它将创建一个包含1000个相同行的表。
另一种解决方案是,您可以用一些数据填充表的开始行,然后通过重复重复开始的行来填充表的下一行,这意味着您可以自己填充表:
INSERT INTO dbo.Customers
SELECT * FROM dbo.Customers
GO 10
Run Code Online (Sandbox Code Playgroud)
如果一列或多列是身份(如果它们是自动递增的,则表示它们接受唯一值),则只需将其放在查询中,例如,如果dbo.Id中的Id是客户,则查询如下所示:
INSERT INTO dbo.Customers
SELECT FirstName, Last Name FROM dbo.Customers
GO 10
Run Code Online (Sandbox Code Playgroud)
代替:
INSERT INTO dbo.Customers
SELECT Id, FirstName, Last Name FROM dbo.Customers
GO 10
Run Code Online (Sandbox Code Playgroud)
否则,您将遇到此错误:
An explicit value for the identity column in table 'dbo.Customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.
注意:这是一种算术级数,因此会持续一点,不要在前面使用大数字GO。
如果您想要一个填充得更详细的表,那么这次可以通过执行一个简单的查询并遵循以下步骤,以相同的方式实现该目的:
选择您的一个表,其中有很多行,例如dbo。
右键单击它并选择 Script Table as > Create To > New Query Editor Window
将新表命名为dbo.CustomersTest之类的其他名称,现在,您可以执行查询以使新表的结构与dbo.Customers相似。
注意:请记住,如果已提交身份标识,则将其更改为“ Identity Specification to No自”。因为您应该反复用原始表的数据填充新表。
INSERT INTO [dbo].[CustomersTest]
SELECT * FROM [dbo].[Customers]
GO 1000
正如@SQLMenace所提到的,RedGate Data Generator是实现它的一个很好的工具,它的价格为369美元,尽管您有14天的试用机会。
好处是RedGate可以识别外键,因此您可以在查询中应用JOIN。
您有很多选择,可以决定应该如何填充每一列,应该在语义上预期每一列,以便建议相关数据,例如,如果您有一个名为“部门”的列,则不会被奇怪的填充字符,用“技术”,“ Web”,“客户”等表达式填充。即使您可以使用正则表达式来限制所选字符。
我用超过10,000,000条记录填充了表格,这真是一个了不起的模拟。
| 归档时间: |
|
| 查看次数: |
43083 次 |
| 最近记录: |