数据导出导入,首先考虑使用什么技术实现导出与导入
利用BCP结合Bulk技术实现数据的导出与导入

  • 1.bcp数据导出(这里是命令行方式),导出的数据需是格式化的,有两种方式可选

    • a.对传输的数据格式要求宽松,无需使用约束格式的文件,使用BCP技术直接导出指定分隔符的文本文件,如csv

  导出数据示例

bcp "SELECT * from updext.dbo.ext_Users where 1>=1" queryout "c:\a.csv" -c -t"0x0b" -r"\n" -S".\SQLSERVER2012" -U"user" -P"password"

    • b.数据格式要求较高,需要专门导出格式文件,用于导入数据时使用

先导出数据格式文件
bcp "updext.dbo.ext_users" format null -c -t"0x0a" -x -f "c:\data.fmt" -r"\n" -S".\SQLSERVER2012" -U"username" -P"password"

再导出数据文件,导入导出往往用于系统间数据同步,因此考虑使用SQL查询queryout

  • 若需要按数据格式文件导出数据

bcp "SELECT * FROM updext.dbo.ext_users WHERE changetime<GETDATE()" queryout "c:\DATA1.csv" -f "c:/data.fmt" -t"0x0a" -r"\n" -S".\SQLSERVER2012" -U"username" -P"password"

  • 若自定义数据分隔符

bcp "SELECT * FROM updext.dbo.ext_users WHERE changetime<GETDATE()" queryout "c:\DATA1.csv" -c -t"0x0a" -r"\n" -S".\SQLSERVER2012" -U"username" -P"password"

  • 2.导入数据

    • 如果是整体数据导入

BULK INSERT updext.dbo.ax--(UserId,UserNo,UserName,PassWord,Email,Code,IsValid,ChangeTime)
FROM 'c:\DATA1.csv'
WITH(
--KEEPIDENTITY,
--FIELDTERMINATOR ='0x0a',--避免使用逗号分隔,内容中出现逗号的概率太大
--ROWTERMINATOR ='\n',
--FIRSTROW = 1
FORMATFILE = 'c:\data.fmt'
)

    • 如果只需要导入部分数据

INSERT INTO updext.dbo.ax(UserId,UserNo,UserName,PassWord,Email,Code,IsValid,ChangeTime)
SELECT UserId,UserNo,UserName,PassWord,Email,Code,IsValid,ChangeTime
          FROM OPENROWSET(BULK N'c:\DATA1.csv', FORMATFILE=N'c:\data.fmt') a
                 WHERE ChangeTime<'2017-01-06 12:02:31.067'

SQL Server批量数据导出导入BCP&Bulk使用的更多相关文章

  1. SQL Server批量数据导出导入BCP使用

    BCP简介 bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过 ...

  2. SQL Server批量数据导出导入Bulk Insert使用

    简介 Bulk insert命令区别于BCP命令之处在于它是SQL server脚本语句,它可以将本地或远程的文件数据批量导入数据库,速度非常之快:远程文件必须共享才行, 文件路径须使用通用约定(UN ...

  3. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

  4. 在SQL Server中将数据导出为XML和Json

        有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做 ...

  5. SQL Server 将数据导出为XML和Json

    有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做,而SQ ...

  6. SQL Server将数据导出到SQL脚本文件

    http://www.studyofnet.com/news/list-8883.2-1-4.html 一.SQL Server 2008将数据导出到SQL脚本文件 1.打开SQL Server200 ...

  7. Azure 云平台用 SQOOP 将 SQL server 2012 数据表导入 HIVE / HBASE

    My name is Farooq and I am with HDinsight support team here at Microsoft. In this blog I will try to ...

  8. Sql server 2008 R2 导出/导入数据报错之无法打开全局共享内存以与性能 DLL 通信

  9. SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍 SQL Server支持的两种批 ...

随机推荐

  1. navicat上如何导出视图,函数等

    如何导出视图,函数,一般通过linux命令行,如果简单点就用navicat把. image.png 这样函数,视图都可以导出来后续更新.....

  2. php如何定时执行任务

    PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的 ...

  3. SRCNN之后的深度学习超分辨率

    SRCNN开山之作 IDN 信息蒸馏网络information distillation network(IDN) Fast and Accurate Single Image Super-Resol ...

  4. JavaScript实现禁用键盘和鼠标的点击事件

    编写自己定义的JavaScript函数maskingKeyboard()和rightKey(); maskingKeyboard():禁用键盘 rightKey():禁用鼠标右键 <script ...

  5. Java集合----Map集合

    Map Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value Map 中的 key 和 value 都 ...

  6. surfaceView和View的区别

    概念:view在UI线程去更新自己:而SurfaceView则在一个子线程中去更新自己 surfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面 在UI的 ...

  7. @synthesize obj=_obj的意义详解 @property和@synthesize

    本文转载至 http://blog.csdn.net/ztp800201/article/details/9231969 http://hi.baidu.com/feng20068123/item/c ...

  8. C++中的抽象基类示例

    抽象基类(abstract base class,ABC)例子:圆与椭圆.建立一个基类BaseEllipse,建立它的恋歌继承了Ellipse和Circle.ellipse.h #ifndef ELL ...

  9. mysql concat

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式. 第一个参数是其它参数的分隔符.分隔符的位置放在要连接的两个字符串之间. 分隔符可以是一个字符 ...

  10. thinkphp5 Windows下用Composer引入官方GitHub扩展包

    很多新手,比如说我,写代码就是在windows下,所以总会遇到很多不方便的地方,比如说GitHub上面的代码更新了,要是你在linux,只要几行命令就可以搞定更新了,在windows下面,你需要用到C ...