Sql自定义表类型批量导入数据
-- 创建自定义表类型
CREATE TYPE [dbo].[App_ProductTable] AS TABLE(
[p_name] [varchar](50) NOT NULL,
[p_audio] [varchar](255) NOT NULL,
[p_video] [varchar](255) NOT NULL
)
GO
--在存储过程中使用自定义表类型
ALTER PROCEDURE [dbo].[sp_import_app_product](
@pDT dbo.App_ProductTable READONLY,
@result INT OUTPUT
)
AS
BEGIN
BEGIN TRAN
UPDATE a SET
a.p_audio=b.p_audio,
a.p_video=b.p_video
FROM App_Product AS a
JOIN @pDT AS b
ON a.p_name=b.p_name
IF @@ERROR<>0
BEGIN
ROLLBACK TRAN
SET @result=-1
END
ELSE
BEGIN
COMMIT TRAN
SET @result=1
END
END
--C#中代码
/// <summary>
/// 批量更新产品信息,批量导入,最好使用 DataTable 数据源
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static int BatchUpdateProductImport(DataTable dt)
{
SqlParameter[] param ={
new SqlParameter("@pDT",SqlDbType.Structured),//需要指定此类型
new SqlParameter("@result",SqlDbType.Int)
};
param[0].Value = dt;
param[0].TypeName = "dbo.App_ProductTable";
param[1].Direction = ParameterDirection.Output;
adsql.SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString, CommandType.StoredProcedure, "sp_import_app_product", param);
return Convert.ToInt32(param[1].Value);
}
-- 直接使用自定义表类型
DECLARE @c App_ProductTable
INSERT INTO @c(p_audio,p_video,p_name) VALUES('/audio/1.mp3','/video/2.mp4','Xizhang')
SELECT * FROM @c
注:在服务端会有一个定义临时变量的过程,然后把所有的数据插入到这个变量中去,然后再执行存储过程的逻辑。
1. 客户端是否一定用DataTable类型
推荐使用DataTable类型,但也可以使用其他的类型,例如DataReader的数据流。
2. DataTable的 字段名称 是否要匹配
不一定要匹配,只要顺序一致,类型一样就可以了。
Sql自定义表类型批量导入数据的更多相关文章
- mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
1. 1)MySQL 连接本地数据库,从cmd中进入mysql命令编辑器: root root分别为用户名和密码 mysql -uroot -proot 2)MySQL 连接本地数据库,用户名为“ro ...
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...
- 批量导入数据表(oracle)
批量导入数据表(oracle) 1.登陆plsql 2.找到菜单栏 工具>>导入数据>>新增图标(会提示选择*.csv文件) 选择如上图所示 3.选择数据并导入 4.下图为执行 ...
- C# SqlBulkCopy类批量导入数据
特别注意 sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); 插入的时候列的顺序可 ...
- 批量导入数据到mssql数据库的
概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
- csv文件批量导入数据到sqlite。
csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {}) # bs_switch 为from表单file字段的namedata =[i.split( ...
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- 随笔编号-09 批量导入数据(Mysql)报MySQL server has gone away 问题的解决方法
问题场景: 使用*.sql 脚本,批量导入数据到mysql实例中,使用DOS 界面导入的,期间,到最后一步 source D:\aaa.sql 回车后,系统提示 MySQL server has g ...
随机推荐
- 【Linux_Unix系统编程】Chapter10 时间
chapter10 时间 1:真实时间:度量这一时间的起点有二:(1)某个标准点:(2)进程生命周期内的某个固定时点(通常为程序启动) 2:进程时间:一个进程所使用的CPU时间总量,适用于对程序,算法 ...
- Hadoop2.0产生背景
Hadoop与Hadoop生态系统的区别 Hadoop:是一个适合大数据分布式存储和分布式计算的平台,在Hadoop1.x中对应于HDFS和MapReduce: Hadoop生态系统:是一个很庞大的概 ...
- Python - Django - ORM 实例
准备工作: 首先创建一个名为 Py_Django 的数据库 新建项目,名为 mysite0 创建完成后需要进行几项配置 mysite0/settings.py 下 首先是 html 文件相关 其次是数 ...
- 9. MyEclipse中的SVN操作手册
该文章转载出处:http://blog.sina.com.cn/s/blog_8a3d83320100zhmp.html 1.导入项目 点击工具栏上的[File-Import],进入下图 (如果你的 ...
- win10下装的ubuntu14.04双系统,ubuntu系统访问win10磁盘问题
参考:https://blog.csdn.net/u010426270/article/details/52420231 ubuntu下 解决方法: 1. 在终端输入如下命令,查看分区挂载情况 sud ...
- Redis 通用操作2
01, 一次设置多个键值 => mset key1 value1 key2 value2 key3 value3 ...... 02, 一次获取多个值 => mget ke1 key2 k ...
- 3.为什么要使用struts2代替struts1.x
转自:https://blog.csdn.net/li15365002374/article/details/9166431?utm_source=blogxgwz1 (1)struts2的execu ...
- requests bs4 爬取 资讯 图片
#!/usr/bin/env python # Version = 3.5.2 # __auth__ = '无名小妖' import requests from bs4 import Beautifu ...
- 使用REGINI修改注册表权限
regini regset.ini 就行啦 regset.ini 是你要修改的数据 1.注册表修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr ...
- as3 中 final 修饰符
现在,在ActionScript 3.0的修饰符中,只有final修饰符没有介绍.之所有放在这里介绍,是因为final修饰符只与继承有关,指定一个方法不能被重写或一个类不能被继承. 一般来说,当用fi ...