我有一个约100个拍卖会的数据库。我想创建一个工具,将我的数据库增长到10000或100000销售额的大小。我需要这个用于测试目的。我正在使用java和SQL Server 2005.原始数据将来自数据库备份文件,该文件将被恢复然后被操纵以增大。什么是增加数据大小的最有效方法?
答案 0 :(得分:1)
这是一种快速而简单的方法:
我从表格的模拟开始,包含一些现有数据:
DECLARE @YourRealTable TABLE(ID INT IDENTITY,SomeValue VARCHAR(100));
INSERT INTO @YourRealTable VALUES
('One existing value 1'),('One existing value 2')
,('One existing value 3'),('One existing value 4');
- 以下CTE将以微秒为单位创建最多10 ^ 9个正在运行的数字...
- 允许插入~4000(4次存在时间1000)
DECLARE @start INT=1;
DECLARE @end INT =1000;
WITH x AS(SELECT 1 AS N FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS tbl(N))--10^1
,N3 AS (SELECT 1 AS N FROM x CROSS JOIN x AS N2 CROSS JOIN x N3) --10^3
,Tally AS(SELECT TOP(@end-@start +1) ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) + @start -1 AS Nr FROM N3
CROSS JOIN N3 N6 CROSS JOIN N3 AS N9)
INSERT INTO @YourRealTable(SomeValue)
SELECT SomeValue
FROM @YourRealTable
CROSS APPLY Tally;
- 现在对~4000个类似记录感到满意:
SELECT * FROM @YourRealTable;
答案 1 :(得分:1)
创建一些测试数据并制作一个sql脚本来插入这些数据。 然后,您必须处理密钥等以获得正确的ID。 然后运行脚本,你就完成了。 如果您需要新的或更多数据,请重复。
答案 2 :(得分:0)
如果您没有任何标识列,则可以执行以下操作:
INSERT INTO Sales
SELECT
S.*
FROM
Sales S
CROSS JOIN (SELECT 1 L UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) Factor
答案 3 :(得分:0)
使用 :
DECLARE @Id INT=1
WHILE @Id<5
BEGIN
INSERT INTO Sales
SELECT * FROM Sales
SET @Id=@Id+1;
END