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 ...
随机推荐
- 使用命令将单个java文件打包为jar
思路:先将java文件编译为class文件,然后再打包为jar 参考博文:https://www.cnblogs.com/sxdcgaq8080/p/8126770.html http://www.m ...
- 在Windows上使用Docker运行.NET COE应用
在Windows上使用Docker运行.NET COE应用 执行步骤: 1:安装Docker For Windows(注意:docker for windows-64位Windows 10.必须开启 ...
- vue.js 第八课
列表渲染 v-for template v-for 数组变动检查 变异方法 替换数组 track-by track-by $index 问题 对象 v-for 值域 v-for 显示过滤/排序的结果 ...
- [理解] C++ 中的 源文件 和 头文件
我是学 C井 的, 现在在工作中主要使用的编程语言是 Java, 还记得当初在第一次接触到 Cpp 的时候, 听到的第一个概念就是 Cpp 的头文件和源文件, 当初理解了好久, 死活都弄不明白, 现在 ...
- mybatis升级案例之CRUD操作
mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...
- 使用IDEA导入一个Maven风格的SSM项目
转自: 方法一: (我用的这种,导入的方法 File->New->Project from existing sources)(同理,important也是一样的) https://how ...
- JAVA笔记---方法
JAVA的方法 方法的基础 1. return 语句的一些高级应用 public class Method{ public static void main(Sting[] args){ System ...
- Struts2学习(四)
struts-defualt.xml指定的result的类型 1.struts-defualt.xml 文件的 181 行 开始定义了: <result-types> <result ...
- UniGUI设置背景图片(09)
主要是Background和LoginBackground属性, 类似地Login窗口背景图也可这样修改 UniServerModule.MainFormDisplayMode:= mfPage;/ ...
- 7.12 Varnish体系结构
备注:应用比较小,采用的架构模式 Varnish + 基本业务功能 但是一个问题是所有的资源在一台服务器上,反向代理特别多,缓存数据特别大,导致一台机器资源不够,考虑机器的拆分 Nginx 的反向代 ...