SQL Server通过BCP进行大批量数据导入导出
预置条件:
使用sa帐号登录SQL Server Management Studio,右键点击安全性-登录名-数据库用户名属性,设置服务器角色为sysadmin。
删除已存在的存储过程
String JOB_BCP_DELETE_SQL = “IF EXISTS (SELECT * FROM sys.objects WHERE name = 'PROCEDURE_BCP_OUT' AND type in (N'P', N'PC'))\n DROP PROCEDURE PROCEDURE_BCP_OUT \n”;
pre = conn.prepareStatement(JOB_BCP_DELETE_SQL);
pre.execute();
创建存储过程
String sql = "set @sql = N'BCP ' + @tableName + ' out ' + @filePath + ' -c -t -U \"' + @userName + '\" -P \"' + @password + '\" -S \"' + @dbIp + '\"'\n";
StringBuffer createSqlBuf = new StringBuffer();
createSqlBuf.append("CREATE PROCEDURE PROCEDURE_BCP_OUT \n")
.append("@dbIp nvarchar(256),\n")
.append("@userName nvarchar(256),\n")
.append("@password nvarchar(256),\n")
.append("@tableName nvarchar(256),\n")
.append("@filePath nvarchar(256)\n")
.append("AS\n")
.append("BEGIN\n")
.append("EXEC master.sys.sp_configure 'show advanced options', 1\n")
.append("RECONFIGURE\n")
.append("EXEC master.sys.sp_configure 'xp_cmdshell', 1\n")
.append("RECONFIGURE\n")
.append("declare @sql nvarchar(256)\n")
.append(sql)
.append("EXEC master..xp_cmdshell @sql\n")
.append("EXEC master.sys.sp_configure 'show advanced options', 1\n")
.append("RECONFIGURE\n")
.append("EXEC master.sys.sp_configure 'xp_cmdshell', 0\n")
.append("RECONFIGURE\n")
.append("END");
String createSql = createSqlBuf.toString();
pre = conn.prepareStatement(createSql);
pre.execute();
执行存储过程
StringBuffer execSqlBuf = new StringBuffer();
execSqlBuf.append("EXECUTE PROCEDURE_BCP_OUT \n")
.append("@dbIp=?, ").append("@userName=?, ").append("@password=?, ")
.append("@tableName=?, ").append("@filePath=?");
String execSql = execSqlBuf.toString();
pre = conn.prepareStatement(execSql);
pre.setString(1, dbIp);
pre.setString(2, dbUserName);
pre.setString(3, dbPassword);
pre.setString(4, tableName);
pre.setString(5, file);
pre.execute();
SQL Server通过BCP进行大批量数据导入导出的更多相关文章
- SQL Server 使用bcp进行大数据量导出导入
转载:http://www.cnblogs.com/gaizai/archive/2010/04/17/1714389.html SQL Server的导出导入方式有: 在SQL Server中提供了 ...
- Java实现大批量数据导入导出(100W以上) -(一)导入
最近业务方有一个需求,需要一次导入超过100万数据到系统数据库.可能大家首先会想,这么大的数据,干嘛通过程序去实现导入,为什么不直接通过SQL导入到数据库. 大数据量报表导出请参考:Java实现大批量 ...
- Java实现大批量数据导入导出(100W以上) -(二)导出
使用POI或JXLS导出大数据量(百万级)Excel报表常常面临两个问题: 1. 服务器内存溢出: 2. 一次从数据库查询出这么大数据,查询缓慢. 当然也可以分页查询出数据,分别生成多个Excel打包 ...
- Java实现大批量数据导入导出(100W以上) -(三)超过25列Excel导出
前面一篇文章介绍大数据量导出实现: Java实现大批量数据导入导出(100W以上) -(二)导出 这篇文章在Excel列较少时,按以上实际验证能很快实现生成.但如果列较多时用StringTemplat ...
- SqlBulkCopy实现大批量数据导入
//自增列重新生成:SqlBulkCopy bc = new SqlBulkCopy(conn) //自增列保留原值:SqlBulkCopy bc = new SqlBulkCopy(conn,Sql ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- SQL SERVER 和ACCESS的数据导入导出
//批量导入Access string filepath = Server.MapPath("student.mdb"); stri ...
- SQL Server数据导入导出的几种方法
在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ...
- SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
* 说明:复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...
随机推荐
- How to do sparse input text classification(dnn) using tensorflow
You can get complete example code from https://github.com/chenghuige/hasky/tree/master/applications ...
- APK使用APKTOOL命令行进行解包和重新打包
在刚开始安卓逆向时遇到了一个很坑爹的问题,就是对apk进行反编译后不能重新打包, 查了一些资料,这里就简单说一下用apktool进行解包和打包的整个过程. 首先把一个apk和apktool放到同一目录 ...
- mybatis02--增删改查
1.修改StudentDao public interface StudentDao { /** * 新增学生信息 */ void addStudent(Student student); // 新增 ...
- 【Swing程序设计/常用面板】
面板也是一个Swing容器,可以作为容器容纳其他组件,但是它必须要被添加到其他容器中.Swing常见的面板是JPanel面板和JScrollPanel面板. JPanel面板可以聚集一些组件来布局. ...
- table中内容过长,table改变的问题
在看效果时发现在Chrome中的table已经不是原来设置的宽度了,而其他浏览器是好的,经过百度发现是单元格内容过多造成的,但这时候给td设置宽度已经不适用了,此时就要给table设置 table{t ...
- javascript 关键字高亮显示实现代码
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- js方法的积累
对字符串编码解码编码 encodeURIComponet(str); 解码 decodeURIComponet(str); 及时反应的方法,监听input值是否发生改变$('#username') ...
- Consul部署架构
Consul 使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接,用于实现分布式系统的服务发现与配置. 应用Consul提供的服务需要建立Consul集群.在Consul方案中,每个 ...
- PHP计算年龄
<?php $birthday = strtotime('1992-10-03'); $time = time();//2019-03-14; function datediffage($bir ...
- 一招制敌 - 玩转 AngularJS 指令的 Scope (作用域),讲得特别好
学习了AngularJS挺长时间,最近再次回首看看指令这部分的时候,觉得比自己刚开始学习的时候理解的更加深入了,尤其是指令的作用域这部分. 步入正题: 每当一个指令被创建的时候,都会有这样一个选择,是 ...