当前位置:首页 » 编程语言 » sql存储过程批量插入
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql存储过程批量插入

发布时间: 2023-06-01 15:03:05

sql存储过程的批量导入

批量导入,我的理解是我们平时都是一条记录一条记录地插入,而批量导入就是超过一条记录一次性插入。比如有一个表A,一个表B,你想把表A中性别为男的记录导入表B,当然表A选出后的表结构和表B的表结构相同。假设A(ID,name,sex,age)表B(ID,name,age)批量导入的procere为:(Oracle)
create or replace PROCEDURE a2b
IS
BEGIN
SELECT A.ID,A.name,A.age
BULK COLLECT INTO B
FROM A
WHERE A.sex='male'
order by A.age
END

② SQL语句 批量修改 插入 删除(纯SQL语句不要(视图和存储过程))

存储过程最后也是sql语句,在每个语句的结尾处,以;结尾,就可以实现多条语句的批量修改,插入,删除,比如: insert into Login(1,2)values('1','2');update User set 1='1' where ?=?;delete from Login where 1='1'; 都可以的,试一下,你写成存储过程也同样的,加上事物会严谨一些,应该没那个必要吧

③ MSSQL 2008 中怎样用存储过程把一个表里的数据批量复制到另一个表

-----将液乱梁闹运userinfo表里的数据陪局到userinfoCopy表中
declare @UserId int,@UserName nvarchar(50)
DECLARE UserArray CURSOR FOR SELECT * FROM [userInfo] with(nolock)
OPEN UserArray
FETCH NEXT FROM UserArray INTO @UserId,@UserName
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO [userInfoCopy]
([Id]
,[name])
VALUES
(@UserId
,@UserName)

FETCH NEXT FROM UserArray INTO @UserId,@UserName
END
CLOSE UserArray
DEALLOCATE UserArray

希望对你有帮助。。。

④ sql批量插入数据的存储过程问题,下面存储过程只能插入一条,就是主键不自增,麻烦看看是什么问题

你确定你的这个存储过程是插入数据吗?没看到一条插入的sql啊!同时你的的表中如悄纳果MaxNum如果是主键的森运晌话是不能这样此锋做更新的

⑤ mysql存储过程怎样批量插入数据

一下代码运行通过:

delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝阳区';
whilei<countdo
setname_proc=CONCAT('露西亚',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;

代码功能:

传入一个行数,控制插入多少条数据

运行效果:

⑥ sql server数据库存储过程实现批量数据插入时跳过错误信息继续插入

不可能实现,批量插入时只要有一条数据不合要求,就会导致全部插入失败。

思路是:批量插入前,应严格检查数据是否符合表结构要求、索引要求等等。
其实SQL要求批量插入时数据必须完全正确,这是对你的数据负责。

⑦ sqlserver 存储过程大批量数据插入

可使用Merge Into 语句完成操作。
具体用法参考文章:http://www.cnblogs.com/biwork/p/3370335.html

⑧ 怎么写存储过程,向数据库中批量插入数据

  1. 用循环语句生成字段值insert

  2. SQL 如下:

createprocereInsertTest

as

begin

declare@iint

declare@svarchar(20)

set@i=1

while@i<=100

begin

select@s=cast(@iASvarchar(20))

insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')

SET@i=@i+1

end

end

⑨ c#怎样向sqlserver批量插入数据

C#和MS SQL交互使用的技术叫做 ADO.NET。 使用ADO.NET可以方便的对SQL SERVER 进行操作。

(如果你对ADO.NET不了解,建议先MSDN一下)

批量插入数据,有两种方式,

1,数据比较复杂但是量不是很大,(这个大小的概念要视你的硬件、网络而定,一般在100万条以上才叫大)。

使用FOR循环进行插入, 即声明连接(conn.Open)然后进行遍历,

一条一条插入数据库(执行Insert语句),

一般来说,100W条数据,如果插入本机数据库的话, 耗时一般在40S-1分钟左右,

也可以在SqlServer中创建一个存储过程来执行Insert命令, 遍历时只需要调用存储过程即可, 存储过程的执行效率比Sql语句要高很多,因为不需要每次都编译。

100W条数据用存储过程来执行的话,一般耗时在20S左右,。


2数据量巨大,但是类型较简单,(一般指上百万条数据)

使用ADO.NET提供的BulkCopy,即批量导入,

语法:

publicstaticvoidBulkToDB(DataTabledt,stringTableName)
{
SqlConnectionsqlConn=newSqlConnection(
ConfigurationManager.ConnectionStrings["dbconnstr"].ConnectionString);

SqlBulkCopybulkCopy=newSqlBulkCopy(sqlConn);
bulkCopy.BulkCopyTimeout=600;
bulkCopy.DestinationTableName=TableName;
bulkCopy.BatchSize=dt.Rows.Count;

try
{
sqlConn.Open();
if(dt!=null&&dt.Rows.Count!=0)
bulkCopy.WriteToServer(dt);
}
catch(Exceptionex)
{
throwex;
}
finally
{
sqlConn.Close();
if(bulkCopy!=null)
bulkCopy.Close();
}
}

需要传入一个DataTable,一个表名。


这种方式速度非常快,同样100W条数据,本机导入,大概3-5秒就可以完成,

但是需要注意,传入的DataTable必须和Sql Server中的表结构一模一样,

比如你的表有3列,分别是Name, Age, Sex。 你传入的DataTable也必须是如此,所以这种方式只适合导入一些基础数据, 并不适合作为数据层的常用方法。


如果数据量巨大又要求很高的效率,更建议使用NoSql数据库

⑩ 存储过程批量插入数据问题

create proc pc_Text
@number_star int,
@number_end int
as
declare @int int
set @int=@number_end-@number_star+1
while(@int>0)
begin
select @int= count(1) from Text where aNumber1=@number_star
if(@int=1) --如果存在变化就不插入
begin
set @number_star=@number_star+1
set @int=@number_end-@number_star+1

end
else
begin
insert into Text value(@number_star ,...)
set @number_star=@number_star+1
set @int=@number_end-@number_star+1

end
end