卡号自动加1吗?参考如下:/*Id, FormatId, F1 ,F2 Id序号我设了自动加一,FormatId我想他也象这样"SL000001", 当Insert时就加1,FormatId我想他也能自动加一"SL000001","SL000002"... 能用一条sql什么办法实现.最好不要用中间表。有什么好方法? 谢谢! */create table #test (id int identity, FormatId as 'SL'+right(10000000+id,6), F1 varchar(50)) go insert #test(F1) select '1' union all select '2' select * from #testdrop table #test/* id FormatId F1 ----------- -------------- ----- 1 SL000001 1 2 SL000002 2(所影响的行数为 2 行) */
insert into table select * from otherthable先把数据组织好,一次性插进去挺快的
批量插入: declare @i int declare @j int declare @m int declare @strsql(8000) set @i=1while(@j<=10000) --一万次 每次100条 set @m=1 begin set @strsql="insert into table(code) select 'sn'" + right("00000000" + convert(varchar(8),@i),8) while(@m<=100) begin set @i=@i+1 set @strsql= @strsql +" union select 'sn'" + right("00000000" + convert(varchar(8),@i),8) set @m=@m+1 end exec(@strsql) set @j=@j+1 end
批量插入: declare @i int declare @j int declare @m int declare @strsql(8000) set @i=1while(@j<=10000) --一万次 每次100条 set @m=1 begin set @strsql="insert into table(code) select 'sn'" + right("00000000" + convert(varchar(8),@i),8) while(@m<=100) begin set @i=@i+1 set @strsql= @strsql +" union select 'sn'" + right("00000000" + convert(varchar(8),@i),8) set @m=@m+1 end exec(@strsql) set @j=@j+1 end ========================================== 学习中
查了很多种方法,不过今天用自己机器测试了一下declare @num int declare @time int declare @str varchar(8000)set @num=1 set @time=1 set @str = 'insert into jobs values(''testDate'',11,22)' while(@num <10000) begin
while(@time<101) begin set @str = @str+';insert into jobs values(''testDate'',11,22)' set @time=@time+1 end print @str set @num=@num+1 exec(@str) end用时三分四十六秒我机器配置:CORE2 6300(超四百外频),1G内存
CREATE TABLE adminInfo ( -- adminId -- this column value is auto-generated, adminLoginName nvarchar(50), adminPassword nvarchar(50), adminLevel int )GOCREATE PROCEDURE [dbo].[P_InsertAdminInfo] @dataNumber INT -- 需要插入的数据量 AS INSERT INTO adminInfo SELECT TOP(@dataNumber) 'manager' + RTRIM(ISNULL((SELECT MAX(REPLACE(adminLoginName,'manager','')*1) FROM adminInfo),0)+ROW_NUMBER() OVER(ORDER BY o.object_id)), '1111111', ABS(CHECKSUM(NEWID())) % 2 + 1 FROM sys.all_objects AS o,sys.all_columns AS c GOEXEC [dbo].[P_InsertAdminInfo] 300000SELECT * FROM adminInfoGODROP TABLE adminInfo DROP PROCEDURE [dbo].[P_InsertAdminInfo]
Id序号我设了自动加一,FormatId我想他也象这样"SL000001",
当Insert时就加1,FormatId我想他也能自动加一"SL000001","SL000002"...
能用一条sql什么办法实现.最好不要用中间表。有什么好方法?
谢谢!
*/create table #test
(id int identity,
FormatId as 'SL'+right(10000000+id,6),
F1 varchar(50))
go
insert #test(F1) select '1'
union all select '2'
select * from #testdrop table #test/*
id FormatId F1
----------- -------------- -----
1 SL000001 1
2 SL000002 2(所影响的行数为 2 行)
*/
导入的话用insert tb1 select ...
然后用bulk insert
然后用SQL Server中的bcp实用工具导入数据库
如果是100万左右的数据是挺快的!
试试看!
insert into table
select * from otherthable先把数据组织好,一次性插进去挺快的
declare @i int
declare @j int
declare @m int
declare @strsql(8000)
set @i=1while(@j<=10000) --一万次 每次100条
set @m=1
begin
set @strsql="insert into table(code) select 'sn'" + right("00000000" + convert(varchar(8),@i),8)
while(@m<=100)
begin
set @i=@i+1
set @strsql= @strsql +" union select 'sn'" + right("00000000" + convert(varchar(8),@i),8)
set @m=@m+1
end
exec(@strsql)
set @j=@j+1
end
declare @i int
declare @j int
declare @m int
declare @strsql(8000)
set @i=1while(@j<=10000) --一万次 每次100条
set @m=1
begin
set @strsql="insert into table(code) select 'sn'" + right("00000000" + convert(varchar(8),@i),8)
while(@m<=100)
begin
set @i=@i+1
set @strsql= @strsql +" union select 'sn'" + right("00000000" + convert(varchar(8),@i),8)
set @m=@m+1
end
exec(@strsql)
set @j=@j+1
end
==========================================
学习中
当然用bulk insert喽,速度很快
Asp.net(C#)开发工程师
1、计算机专业本科以上学历,有能力者不限制;
2、精通ASP.NET、C#、MSSQLServer等技术及相关开发工具;
3、熟练掌握UML建模,至少熟悉一种建模软件;
4、熟悉数据库操作,有面向对象基础。熟悉三层开发构架;
5、应聘者请附上曾开发的项目实例或说明;
6、有较强的合作、沟通能力,具有团队精神与团队合作经验根据能力定薪金,具体待遇面议,保证不低于同行业水平.
Email:[email protected]
工作地点:
北京望京科技园利泽中园或北京电子城科技园区 [靠近望京和酒仙桥地区]
declare @time int
declare @str varchar(8000)set @num=1
set @time=1
set @str = 'insert into jobs values(''testDate'',11,22)'
while(@num <10000)
begin
while(@time<101)
begin
set @str = @str+';insert into jobs values(''testDate'',11,22)'
set @time=@time+1
end
print @str
set @num=@num+1
exec(@str)
end用时三分四十六秒我机器配置:CORE2 6300(超四百外频),1G内存
并且,如果复制表数量相对于插入的目的表,数据量要大得多,可以先删除索引,就是减少插入数据时的排序所花的时间...
(
-- adminId -- this column value is auto-generated,
adminLoginName nvarchar(50),
adminPassword nvarchar(50),
adminLevel int
)GOCREATE PROCEDURE [dbo].[P_InsertAdminInfo]
@dataNumber INT -- 需要插入的数据量
AS
INSERT INTO adminInfo
SELECT TOP(@dataNumber)
'manager' + RTRIM(ISNULL((SELECT MAX(REPLACE(adminLoginName,'manager','')*1) FROM adminInfo),0)+ROW_NUMBER() OVER(ORDER BY o.object_id)),
'1111111',
ABS(CHECKSUM(NEWID())) % 2 + 1
FROM sys.all_objects AS o,sys.all_columns AS c GOEXEC [dbo].[P_InsertAdminInfo] 300000SELECT * FROM adminInfoGODROP TABLE adminInfo
DROP PROCEDURE [dbo].[P_InsertAdminInfo]