6

有这样的软件吗?数据本身是否有意义并不重要。我只是担心这些领域会被填充。基本上,它将读取表定义并相应地生成一些数据。如果它询问每个表要插入多少行,默认值是留空还是填充,如何处理 varchars(完全或最多给定的指定字符数),那也很棒. 理想情况下是免费的 :) 但也非常欢迎商业产品建议。谢谢你们。

4

8 回答 8

7

我看到仍然没有被选为最佳的答案。除了这个线程中已经提到的解决方案,我可以建议使用ApexSQL Generate - 一个 SQL 数据生成器工具,它能够使用各种数据源和各种数据生成器快速生成数百万行。

它具有功能齐全的免费试用版,因此您可以下载并测试它是否可以完成您的工作。

于 2016-04-27T08:20:43.017 回答
3

Hey SQL Data Generator提供真实的测试数据,您可以从以下网站下载此数据 http://www.red-gate.com/products/sql-development/sql-data-generator/

于 2013-03-25T06:10:53.330 回答
2

对于mysql数据库,您可以使用filldb.info.

它会自动生成数据并用这些虚拟数据填充您的数据库表

于 2015-03-05T13:50:12.553 回答
2

尝试为此使用 Visual Studio,如本文所示

http://www.mssqltips.com/sqlservertip/2190/generating-sql-server-test-data-with-visual-studio-2010/

于 2013-03-25T09:29:15.190 回答
2

如果有人正在寻找一种无需额外软件的简单方法来做到这一点。

我们只需要一个返回随机数的函数:

-- 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

结果:

样本结果

相应地调整查询以匹配您的表/列名称。

于 2016-07-21T00:10:24.673 回答
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
于 2019-12-17T09:14:59.697 回答
1

有大量用于 SQL Server 测试数据生成的工具。因此,您不必通过某种方式构建自己的逻辑来手动执行此操作。请检查http://www.kodyaz.com/articles/tools-sql-server-tool-list.aspx上的测试数据生成器部分

于 2013-03-25T12:19:13.193 回答
1

在 netbeans IDE 中用 java 创建了一个项目。 这个项目允许你用随机数据填充你的表。它有一些问题,所以我正在努力解决它。

于 2018-04-10T23:58:14.657 回答