SQL批量插入表类 SqlBulkInsert
using System.Data.SqlClient;
namespace RaywindStudio.DAL {
/// <summary>
/// MSSQL批量插入表
/// </summary>
public static class SqlBulkInsert {
private static bool initsql = false;
/// <summary>
/// SQL批量插入表 过程
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fields">字段,逗号分隔</param>
/// <param name="Values">字段值,逗号分隔</param>
/// <param name="RowSplit">Values行间分隔符</param>
/// <param name="RowCount">Values行数</param>
/// <param name="conn">Sql Connection</param>
/// <returns></returns>
public static bool BulkInsert(string tableName, string fields, string Values, string RowSplit, int RowCount,
SqlConnection conn) {
initSql(conn);
string ret= SqlAdo.ExecuteScalar("EXEC [dbo].[pSqlBulkInsert]"
+ " @tableName=N'" + tableName
+ "',@fields=N'" + fields
+ "',@values=N'" + Values
+ "',@split=N'" + RowSplit
+ "',@rowCount=" + RowCount.ToString(), conn).ToString();
return ret == "";
}
private static void initSql(SqlConnection sqlconn) {
if (!initsql) {
SqlAdo.ExecuteNonQuery(
@"IF not EXISTS (SELECT * FROM dbo.SysObjects
WHERE ID = object_id(N'[fGetArrayStr]')
and OBJECTPROPERTY(ID,'IsScalarFunction')=1)
begin
exec(
'CREATE function fGetArrayStr
(
@str nvarchar(max), --字符串
@split nvarchar(10), --分隔符
@index int --取第几个元素
)
returns nvarchar(4000)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location =0 set @location =len(@str)+1
return substring(@str,@start,@location-@start)
end')
end", sqlconn);
SqlAdo.ExecuteNonQuery(
@"IF not EXISTS (SELECT * FROM dbo.SysObjects
WHERE ID = object_id(N'[pSqlBulkInsert]')
and OBJECTPROPERTY(ID,'IsProcedure')=1)
begin
exec(
'Create proc pSqlBulkInsert
@tableName nvarchar(50),
@fields nvarchar(500),
@values nvarchar(max),
@split nvarchar(5),
@rowCount int
as
declare @next int =1
declare @sql nvarchar(500)=N' Insert Into '+@tableName +N'('+@fields +N') Values('
declare @sqlTmp nvarchar(4000)
Begin tran
while @next<=@rowCount
begin
set @sqlTmp=@sql+dbo.fGetArrayStr(@values,@split,@next)+N')'
Exec(@sqlTmp)
if(@@error<>0)
begin
rollback
return -1
end
set @next=@next+1
end
commit
return 0", sqlconn);
initsql = true;
}
}
}
}
SQL批量插入表类 SqlBulkInsert的更多相关文章
- SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)
1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...
- SQL语句-批量插入表(表数据插表)
批量插入表(表数据插表) ****1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,...) select value1,val ...
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- 利用sql批量删除表,存储过程
利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...
- insert into select 与select into from -- sql 批量插入
参考资料:http://www.w3school.com.cn/sql/sql_union.asp UNION:操作符用于合并两个或多个select语句的结果集. ...
- Delphi中SQL批量插入记录
http://www.cnblogs.com/azhqiang/p/4050331.html 在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式: 1. ...
- SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:42:07 ******/ SET ANSI_NULLS ON GO SET Q ...
- 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie
昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...
- Sql批量插入方法
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
随机推荐
- Snuke's Coloring 2-1
There is a rectangle in the xy-plane, with its lower left corner at (0,0) and its upper right corner ...
- Catalyst 2960 重启?
在实际的网络环境中,交换机的各种问题层出不穷,这里我遇到一个案例.关于Cisco 2960 S 交换机重启的问题. 故障描述:有那么几台C2960S交换机总是随机的重启. 原因:从show ver来 ...
- Python 基础之面向对象之装饰器@property
一.定义 装饰器@property可以把方法变成属性使用作用: 控制类内成员的获取 设置 删除获取 @property设置 @自定义名.setter删除 @自定义名.deleter 二.具体实现 1. ...
- git pull 之后怎么找回别覆盖掉的内容
[半夜吓出冷汗,git这个原理还真得好好学学] 不小心把本地写的东西pull了下,然后,全部覆盖掉了,以为就这样没了. 后面想到有“时光穿梭机”,“历史回滚”,在各大群友的帮助下,终于找回了. git ...
- Java基础知识笔记第九章:组件及事件处理
java Swing 图形用户界面(GUI : Graphics User Interface) 窗口 JFrame常用方法 JFrame()创建一个无标题的窗口. JFrame(String s)创 ...
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
出现这个异常原因可能很多: 1.编码问题 2.没有加载类驱动:换一种数据库的连接方式,就忘了这个:Class.forName(driverclass); import java.io.IOExcept ...
- 1.HTTP与HTTPS区别
1.HTTP与HTTPS区别 HTTP协议默认采用80端口 HTTPS协议默认采用443 HTTPS相较于HTTP协议更安全一些,采用SSL+安全证书,但是效率低 2.使用代码格式模拟HTTP请求(H ...
- springmvc启动加载指定方法
官网: https://docs.oracle.com/javaee/7/api/javax/annotation/PostConstruct.htmlblog:https://blog.csdn.n ...
- Windows对应的"Hello,world"程序
<Windows程序设计>(第五版)(美Charles Petzold著) https://docs.microsoft.com/zh-cn/windows/desktop/apiinde ...
- TensorFlow样例一
假设原函数为 f(x) = 5x^2 + 3,为了估计出这个函数,定义参数未知的函数g(x, w) = w0 x^2 + w1 x + w2,现要找出适合的w使g(x, w) ≍ f(x).将这个问题 ...