5000万条测试记录
老鸟们,帮帮我吧!今天BOSS让我建一张10个字段以上的一张表,然后插入测试记录5000万条
给点意见,或者是方法啊! --------------------编程问答-------------------- 看内容是什么类型就定义什么类型的字段
尽量别浪费空间 --------------------编程问答-------------------- 把里面的数据都写成int!嘿嘿 --------------------编程问答-------------------- 我想死的心都有了
看来我还真的是浪费空间了!
、 --------------------编程问答-------------------- varchar呢? --------------------编程问答-------------------- 分段取数据 --------------------编程问答-------------------- SQL循环插入数据,比如
select count(*) from Test
declare @a int
set @a = 1
while @a<1000000
begin
insert into Test(name) values(@a)
set @a = @a + 1
end --------------------编程问答-------------------- 顶。。 --------------------编程问答-------------------- http://blog.csdn.net/fisea/archive/2009/12/14/5003136.aspx --------------------编程问答-------------------- 5楼的分段去数据什么意思呢?
我不是很清楚 --------------------编程问答-------------------- // 定义变量用户保存当前索引
DECLARE @i int
set @i=0
//开始循环插入数据;
WHILE @i < 50000000
BEGIN
Set @i =@i +1
// 插入数据操作
END
如果您不希望数据一样您可以使用i 例如名称字段+i
您可以分批插入5千万分几批插入 --------------------编程问答-------------------- --------------------编程问答--------------------
顶 --------------------编程问答-------------------- 5000W 哈哈 我上次插入 200W数据测试分页
分了好几次插入呢 哈哈 CPU吃不消 电脑老了哇, --------------------编程问答--------------------
1create database data_Test --创建数据库data_Test
2GO
3use data_Test
4GO
5create table tb_TestTable --创建表
6(
7 id int identity(1,1) primary key,
8 userName nvarchar(20) not null,
9 userPWD nvarchar(20) not null,
10 userEmail nvarchar(40) null
。。。
11)
12GO
------------------------------------------------
插入数据
1--插入数据
2set identity_insert tb_TestTable on
3declare @count int
4set @count=1
5while @count<=50000000
6begin
7 insert into tb_TestTable(id,userName,userPWD,userEmail) values(@count,'admin','admin888','lli0077@yahoo.com.cn')
8 set @count=@count+1
9end
10set identity_insert tb_TestTable off
--------------------编程问答-------------------- 是啊
哭吧我! 现在还在插 都过去1个多小时了!
还在电脑没挂 嘿嘿 --------------------编程问答--------------------
只有引用的内容不允许回复! --------------------编程问答-------------------- 上次我插,每200万条用10分钟,慢慢等吧 --------------------编程问答-------------------- 创建一个id为自动增涨列的表,然后用循环插入一样的数据
代码如下:
create database DB--创建数据库DB
GO
use DB
GO
create table tableName--创建表
(
id int identity(1,1) primary key,
userName nvarchar(20),
......
)
set identity_insert tableName on
declare @count int
set @count=1
while @count<=50000000
begin
insert into tb_tableName(id,userName) values(@count,'admin')
set @count=@count+1
end
set identity_insert tableName off
--------------------编程问答-------------------- 楼上的方法可行 --------------------编程问答-------------------- CPU吃不消,那你只能手动慢慢输5000w条记录吧 --------------------编程问答-------------------- --------------------编程问答-------------------- 5000W才一个省那么多人,插13个亿进来 --------------------编程问答-------------------- 分几次循环下吧 --------------------编程问答-------------------- 应该是硬盘吃不消吧。
--------------------编程问答-------------------- 用电子表格造数据,
然后用bcp命令导入,
是速度最快的方法。
--------------------编程问答-------------------- 存储过程最快.
10000一次COMMINT 很快的
估计 几个小时能搞定
--------------------编程问答-------------------- 我试下一下CPU占用基本在个位数。
--------------------编程问答-------------------- 数据插入, 充分利用CPU资源, IO资源,
1, 存储过程是必要的,
2, 分段COMMIT也是必要的
3,确根据CPU和内存调整每次COMMIT的件数是很有必要的
建立表
CREATE TABLE [dbo].[Table1](
[DATA1] [int] NULL,
[DATA2] [int] NULL,
[DATA3] [int] NULL,
[DATA4] [int] NULL,
[DATA5] [int] NULL,
[DATA6] [int] NULL,
[DATA7] [int] NULL,
[DATA8] [int] NULL,
[DATA9] [int] NULL,
[DATA10] [int] NULL,
[DATA11] [int] NULL
) ON [PRIMARY]
执行存储过程
alter PROCEDURE InsertData
AS
BEGIN
declare @count int;
declare @data1 int;
set @count = 0;
set @data1 = 1;
SET NOCOUNT ON;
begin TRANSACTION
while @count<5000001
begin
set @count = @count + 1;
insert into [TestData].[dbo].[Table1] values(@count,1,1,1,1,1,1,1,1,1,1);
set @data1 = @count % 200000;
if @data1 = 0
begin
commit
begin TRANSACTION
end
end
commit
END
机器翻译: CPU E5200, 内存4G, SQLSEVER2008
500万条数据测试结果 1分钟12秒
如果CPU好一点 速度会更快 --------------------编程问答-------------------- 干嘛需要那么庞大的测试数据 --------------------编程问答--------------------
试了下,50万数据,用了2分钟.. --------------------编程问答-------------------- --------------------编程问答-------------------- 把类型换成varchar就可以了 做成你需要的逻辑
可以根据CPU的类型, 单核心CPU就跑一个存储过程
双单核心CPU就跑两个存储过程
20个字段以内, 字段不长的情况
5000万条数据大约需要半小时吧 --------------------编程问答-------------------- 没做过这么大批量的
帮顶
感觉应该是使用存储过程是最快的吧
补充:.NET技术 , ASP.NET