批量导入数据到mssql数据库的
概述
批量导入数据到数据库中,我们有好几种方式。
- 从一个数据表里生成数据脚本,到另一个数据库里执行脚本
- 从EXCEL里导入数据
上面两种方式,导入的数据都会生成大量的日志。如果批量导入5W条数据到数据表里,就有生成5W条insert日志。那么这有好的方式处理这个问题吗?
下面介绍另一种导入方式,批处理导入。
批处理导入数据
步骤一
准备一个空的数据表Table,将你要导入的数据,全部导入到这个Table里,当然,这个数据表Table和你要导入的表结构是一模一样的。之后新建一个记事本,里面写上如下的批处理命令,保存命名为import.bat
bcp [Test].dbo.Table OUT "d:/test.txt" -c -S 192.168.1.1 -U sa -P pause
上面的命令-U -S -T分别是什么意思,见后文。当前,如果你的数据库身份验证是windows,如果写成
bcp [Test].dbo.Table OUT "d:/test.txt" -c -S 192.168.1.1 -T
pause
执行命令后,将得到一个记录得Table所有数据的test.txt文件。
步骤二
新建一个记事本,里面写批处理命令,将所有的数据都导入到指定的数据库表里
bcp "[Test].dbo.Table" in "d:/test.txt" -c -S (local) -U sa -P pause
数据库身份验证是windows,写成
bcp "[Test].dbo.Table" in "d:/test.txt" -c -S (local) -T pause
bcp批处理命名解释
[Test].dbo.Table:数据库表名
d:/test.txt :要导入的数据
-S server_name[ \instance_name] ,后面填的是服务器,上面是 (local),当然,填 . 也行
-U login_id,后面指的是服务器登陆用户名
-P password,后面指的是服务器登陆密码
-T 指定 bcp 实用工具通过使用集成安全性的可信连接连接到 SQL Server。不需要网络用户的安全凭据、login_id 和 password。如果不指定 –T,则需要指定 –U 和 –P 才能成功登录
解释完上面之后,接下来解释一下d:/test.txt
这个文本里的数据是有格式的,数据表里有多少个字段,这里面就应该有多少字段,每个字段对应着数据表里的字段,中间用Tab键隔开。例如:
51006 NULL bbbbbbbbbbbbbbB 2015-12-31 00:00:00.000 0 NULL 1.00000 2 1 2015-02-09 12:08:28.017 jys 2015-02-09 12:08:28.017 jys 0
51007 NULL aaaaaaaaaaaaaaB 2015-12-31 00:00:00.000 0 NULL 1.00000 2 1 2015-02-09 12:08:28.017 jys 2015-02-09 12:08:28.017 jys 0
51008 NULL ccccccccccccccB 2015-12-31 00:00:00.000 0 NULL 1.00000 2 1 2015-02-09 12:08:28.017 jys 2015-02-09 12:08:28.017 jys 0
如果第一列是自增ID,你填写的数值无效的,数据库会自动自增。
结果
最后,执行批处理文件命令即可,这样,导入数据生成的日志只有一条。

批量导入数据到mssql数据库的的更多相关文章
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...
- csv文件批量导入数据到sqlite。
csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {}) # bs_switch 为from表单file字段的namedata =[i.split( ...
- Cassandra使用pycassa批量导入数据
本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...
- 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 ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
- neo4j批量导入数据的两种解决方案
neo4j批量导入数据有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import. LOAD CSV 导入的文件必须是csv文件 ...
- 使用python向Redis批量导入数据
1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self) ...
- Redis批量导入数据的方法
有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...
- c# 采用datatable 快速导入数据至MSSQL的方法分享
转自:http://www.maomao365.com/?p=5613 摘要:下文讲述使用c#代码快速将dataTable导入至mssql数据库的方法 实现思路:需要将datatable调整为同目标表 ...
随机推荐
- Karma和Jasmine自动化单元测试
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- 实战BRTSvc一款我见过的最嚣张的挖矿软件
第一步:发现告警 Suricata发现特征字符串jsonrpc,这个是匹配挖矿木马的一个重要特征.于是开始分析告警信息: 告警中可以提取出的有效信息如下: 目标IP:149.28.199.108 目标 ...
- Unity3D笔记 切水果三 切水果
一.创建一个Apple00,拖拽Prfabs下的Sprite命名为Apple00,添加碰撞器Box Collider,编写代码Knife Rey1.js 二.做被切的苹果 步骤和一是一样的,但是被切的 ...
- 【转载】ARM与单片机的区别
前几天在博客园的博问模块上面发布了一个博问,可能是我问题描述有些问题,被一个园友指出,ARM与单片机是不同的.所以我特地查了一下ARM与单片机的区别,之前一直以为ARM就是加强版的单片机,stm32无 ...
- Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
总结起来一句话:在Thread中调用this其实就是调用Thread私有Runnable类型的target,target是Thread类的一个属性,而Thread.currentThread()是指新 ...
- 【vue】---项目接口管理---【巷子】
一.前言 在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口 假设后端的文档分成了以下几个模块 1.发现模块 2.个人信息模块 3.商品模块 4.评论模块 ...... ...
- 世界时区和Java时区详解
0.引言 Druid中时区的问题一直困扰着我们,所以我专门去研究了一下世界时区和Java中的时区,对使用Druid很用帮助. 1.UTC时间&GMT时间 UTC时间是时间标准时间(Univer ...
- logstash实战input插件syslog
vim /etc/logstash/conf.d/syslog.conf input{ syslog{ type => "system-syslog" port => ...
- Ubuntu 16.04: How to install OpenCV
参考:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ 步骤# 1:安装opencv的依赖项 本 ...
- slam学习资源
从零开始学slam: http://blog.csdn.net/akunainiannian/article/details/45363731 史上最全的SLAM学习资料收集 http://www. ...