存储过程批量从一个表插入到另一个表

3 篇文章 0 订阅


create proc YSCX_insert
@SCUserId int ,
@SCYY nvarchar(500),
@JMBH varchar(50)  ,
@result int output
as
  declare @sqlInsert varchar(500),
          @sqlDelete varchar(500)
  begin  tran        
  select @sqlInsert += 'insert into dbo.YSCX select JMBH, WJH, LWDW, LWRQ, BLSX, MJ, SFGD, GDLB, UserId, LRSJ, WJBT,  SJDH, YFDH, SFBJ, BJSJ, NGR, QFR,'+CONVERT(varchar(20),@SCUserId)+',GETDATE(),'+@SCYY+' from dbo.WJDJ where ID in ('+@JMBH+')'
  exec (@sqlInsert)
  select @sqlDelete ='delete WJDJ where  JMBH in ('+@JMBH+')'
  exec (@sqlDelete)
  if @@ERROR <> 0
  begin
     rollback tran
  set @result = 0
  return
  end
    else
     begin
       commit tran
       set @result = 1
     end
 go

 

1.如果insert into 表名 后面没有列名,那么就需要插入所有的数据,如上面所示

2.然后insert into 表名 后面有列名 ,那么就只需要插入所需的列名

insert into  dbo.YDZX   ( factoryName, companyName, HGZCDJBM, ZXPZSJ,  BZ, DQ, QYXZ, LXR, LXDH, scsj, scyh)    select  factoryName, companyName, HGZCDJBM, ZXPZSJ,  BZ, DQ, QYXZ,  LXR, LXDH ,GETDATE() ,305  from dbo.YDZX_test

2

### 回答1: 我可以给你一个示例存储过程: CREATE PROCEDURE 批量导入 ( @tableName VARCHAR(50), @filePath VARCHAR(100) ) AS BEGIN SET NOCOUNT ON; DECLARE @sql NVARCHAR(MAX) = ''; SET @sql = 'BULK INSERT ' + @tableName + ' FROM ''' + @filePath + ''' WITH (FIELDTERMINATOR = '','')'; EXEC sp_executesql @sql; END ### 回答2: 批量导入存储过程一个用于将大量数据快速插入数据库的功能,以提高数据导入的效率。下面是一个简单的例子: ``` CREATE PROCEDURE BulkInsertTable @TableName VARCHAR(255), @FilePath VARCHAR(255) AS BEGIN SET NOCOUNT ON; DECLARE @Sql VARCHAR(MAX); SET @Sql = 'BULK INSERT ' + @TableName + ' FROM ''' + @FilePath + ''' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'; EXEC(@Sql); END ``` 这个存储过程包含两个参数:@TableName示要导入数据的名,@FilePath示数据文件的路径。过程的主要部分是使用动态SQL构建一个包含BULK INSERT语句的字符串,然后使用EXEC函数执行该字符串。 BULK INSERT语句用于将数据从CSV文件中逐行插入指定的中。FIELDTERMINATOR参数指定了CSV文件的字段分隔符(在本例中为逗号),ROWTERMINATOR参数指定了CSV文件的行分隔符(在本例中为换行符)。 该存储过程在执行时可以通过传入不同的名和文件路径来实现对不同批量导入操作。一次性导入大量数据,不仅节省了逐条插入数据的时间,还能减少与数据库的交互次数,从而提高了导入效率。 请注意,该存储过程可能需要适当的权限设置,以及对输入参数的验证和错误处理。这个例子仅作为一个简单的概念演示,实际应用中可能还需要根据具体要求进行进一步的调整和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值