概述

批量导入数据到数据库中,我们有好几种方式。

  1. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本
  2. 从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数据库的的更多相关文章

  1. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

  2. csv文件批量导入数据到sqlite。

    csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {})  # bs_switch 为from表单file字段的namedata =[i.split( ...

  3. Cassandra使用pycassa批量导入数据

    本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...

  4. 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 ...

  5. java使用POI实现Excel批量导入数据

    1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...

  6. neo4j批量导入数据的两种解决方案

    neo4j批量导入数据有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import. LOAD CSV 导入的文件必须是csv文件 ...

  7. 使用python向Redis批量导入数据

    1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self) ...

  8. Redis批量导入数据的方法

    有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...

  9. c# 采用datatable 快速导入数据至MSSQL的方法分享

    转自:http://www.maomao365.com/?p=5613 摘要:下文讲述使用c#代码快速将dataTable导入至mssql数据库的方法 实现思路:需要将datatable调整为同目标表 ...

随机推荐

  1. 如何修改 Ubuntu 的字符集?

    步骤: 1.编辑 local 文件 输入: vi /var/lib/locales/supported.d/local 将 zh_CN.GB2312 加入到后面,保存. 2.执行:locale-gen ...

  2. cookie设置在特定时间点过期的方法

    假设需求为:在当天晚上0:00过期. 方法: 得到当天晚上0:00这个时间点的一个时间. function getNextDate(){        var d = new Date(),      ...

  3. php底层变量分析

    <?php //数组引用 $arr = array('a','b','c','d'); $x = & $arr[1]; $tmp = $arr; $arr[1] = 'e'; echo ...

  4. Python守护进程和脚本单例运行

    Python 守护进程 守护进程简介 进程运行有时候需要脱离当前运行环境,尤其是Linux和Unix环境中需要脱离Terminal运行,这个时候就要用到守护进程.守护进程可以脱离当前环境要素来执行,这 ...

  5. Unity3D 加密 Assembly-CSharp.dll (Android平台) 防止反编译【转】

    转自 http://blog.csdn.net/u013108312/article/details/54234439  

  6. C++的函数重载和main函数之外的工作

    今天被问到一个C++的函数重载问题,一下子没反应过来,这种基础的问题竟然忘记了,以下记录一下这些忘记的内容.     函数重载 函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不 ...

  7. matlab中 数据保留有效位数

    可以使用round函数  ,这函数原本功能是四舍五入 比如: >> A = 0.0326465;>> B = round(A*1000)/1000 B = 0.0330

  8. 安装 SQL SERVER MsiGetProductInfo 无法检索 Product Code 1605错误 解决方案

    重装数据库服务器上的SQL SERVER 2008 上遇到了以下问题 标题: SQL Server 安装程序失败. SQL Server 安装程序遇到以下错误: MsiGetProductInfo 无 ...

  9. svn和git的优缺点

    git官网api: https://git-scm.com/docs 一. 集中式vs分布式 1. Subversion属于集中式的版本控制系统集中式的版本控制系统都有一个单一的集中管理的服务器,保存 ...

  10. vim配置函数跳转(c/c++)

    暂时草记一下,有时间好好整理 ctags 如果只是查看函数与变量是在哪里定义的,用ctags就可以了. ctrl+]跳到定义的地方,ctrl+t跳回来. 想要像IDE那样在旁边显示函数与变量列表,用t ...