那里有这样的软件吗?数据本身是否有意义并不重要。我只是担心要填充的字段。基本上,它将读取表定义并相应地生成一些数据。如果它要求每个表插入多少行,默认值是空白还是填充,如何处理varchars(完全范围或最多给定的指定字符数)也会很棒。理想的免费:)但商业产品的建议也非常受欢迎。 谢谢大家。
答案 0 :(得分:6)
我看到仍然没有被选为最佳的答案。除了这个线程中已经提到的解决方案之外,我建议使用ApexSQL Generate – a SQL data generator tool,它能够使用各种数据源和各种数据生成器快速生成数百万行。
它具有功能齐全的免费试用版,因此您可以下载并测试它是否能完成您的工作。
答案 1 :(得分:3)
嗨 SQL数据生成器提供了可以从以下网站下载的实际测试数据 http://www.red-gate.com/products/sql-development/sql-data-generator/
答案 2 :(得分:2)
尝试使用Visual Studio,如本文所示
http://www.mssqltips.com/sqlservertip/2190/generating-sql-server-test-data-with-visual-studio-2010/
答案 3 :(得分:2)
我通常使用的非常简单的SQL:
create table fillTbl (msg nvarchar(255))
insert into fillTbl select top 4285 description from sys.sysmessages where msglangid=1033 -- ~ 1 Mo
GO 100 -- the number of Mo you want to add
exec sp_spaceused 'fillTbl' -- space in the table
exec sp_spaceused -- space in the database
-- drop table fillTbl -- reset the space added
答案 4 :(得分:1)
SQL Server的测试数据生成有大量工具。 因此,您不必通过某种方式构建自己的逻辑来手动执行此操作。 请查看http://www.kodyaz.com/articles/tools-sql-server-tool-list.aspx
上的测试数据生成器部分答案 5 :(得分:1)
对于 mysql 数据库,您可以使用filldb.info
。
它会自动生成数据并使用此虚拟数据填充数据库表
答案 6 :(得分:1)
如果有人在没有额外软件的情况下正在寻找一种简单的方法。
我们只需要一个返回随机数的函数:
-- Create the RANDBETWEEN function
-- Usage: SELECT dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID())))
CREATE FUNCTION dbo.RANDBETWEEN(@minval TINYINT, @maxval TINYINT, @random NUMERIC(18,10))
RETURNS TINYINT
AS
BEGIN
RETURN (SELECT CAST(((@maxval + 1) - @minval) * @random + @minval AS TINYINT))
END
GO
然后你可以运行这样的查询:
-- Insert 1 million records into the Person table
INSERT INTO Person (FirstName,LastName,CityId)
SELECT TOP 1000000
CASE
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 0 THEN 'John'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 1 THEN 'Jack'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 2 THEN 'Bill'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 3 THEN 'Mary'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 4 THEN 'Kate'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 5 THEN 'Matt'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 6 THEN 'Rachel'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 7 THEN 'Tom'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 8 THEN 'Ann'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 9 THEN 'Andrew'
ELSE 'Bob' END AS FirstName,
CASE
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 0 THEN 'Smith'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 1 THEN 'Morgan'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 2 THEN 'Simpson'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 3 THEN 'Walker'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 4 THEN 'Bauer'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 5 THEN 'Taylor'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 6 THEN 'Morris'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 7 THEN 'Elliot'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 8 THEN 'White'
WHEN dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) = 9 THEN 'Davis'
ELSE 'Brown' END AS LastName,
dbo.RANDBETWEEN(1,15,RAND(CHECKSUM(NEWID()))) as CityId
FROM sys.all_objects a
CROSS JOIN sys.all_objects b
GO
结果:
相应地调整查询以匹配您的表/列名称。
答案 7 :(得分:-1)
我创建了project with java in netbeans IDE 此项目允许您使用随机数据填充表。它有一些问题所以我正在努力解决它。