MS SQL数据库导出按id批量导出数据 BCP工具很实用
类型:数据库类大小:535M语言:中文评分:3.1标签:立即下载数据不仅仅是bcp,bcp最大的优点是可以根据id批量导出数据,节省时间。另一种是直接在页面上导出数据,页面会列出数据库中的数据,然后选择一种方法(如xls)来导出。因为每天都要处理数据库,所以经常会遇到数据传输的需求。类似于把服务器A的表数据转移到与服务器B同名的表中,或者把在线服务器的一部分数据拉到离线测试服务器,由开发人员进行调试。一般来说,有几种表到表的复制方法:1 .构建一个链接服务器并编写一个INSERT语句。适合两台服务器相互连接,在表数比较少的情况下,手工编写INSERT语句也是可以接受的。但是如果两台服务器不能互联或者连接速度慢,或者多个表需要手工插入列名,写起来会比较麻烦,语句也要调试。2.用导出工具查询出所有数据或需要导出的数据或保存到EXCEL中,然后用导入工具导入目标表。这种方法可以用于数据量小、数据相对标准、定期保存到EXCEL中的数据,否则会出现各种问题,最常见的是大文本导出到EXCEL后往往无法按原样导入,并报告各种格式错误。3.找出要导出的数据,复制它,并从SSMS的两个200编辑行中选择一个来复制它。这个方法和第二个问题类似,速度比较快,但是要求也比较严格。需要更少量的数据和更常规的数据。4.备份原始库-由目标服务器恢复备份-跨库插入数据或直接使用恢复的库。这种方法可以完全COPY多个表,但缺点是:一是麻烦;其次,需要登录服务器复制备份文件,这很可能是管理良好的公司领导签署的。你知道,所以我不常使用这种方法。5.BCP工具,这是本文中最常用的数据迁移工具。忽略大文本的不规则字符,忽略大数据量,通过中间文件传输,无需登录服务器本身。让我们从最简单的例子开始,介绍BCP的用法。假设源表名T1、数据库名DB1、服务器实例SERVER1、目标表名T2、数据库名DB2和服务器实例SERVER2。T1和T2在结构上是相同的。T2的主键不与T1重复,或者直接为空表。第一个是export语句:bcpdb 1 . dbo . t1out 3360 \ t1 . dat-s SERVER1-u sa-p sa-n在带有可以连接到SERVER1的SQLSERVER的机器(例如,SERVER 1本身)上的命令行CMD中运行此命令,导出程序将开始运行。完成后,将在d盘上生成一个名为t1.dat的文件。将此文件复制到可以连接到SERVER2并安装SQLSERVER的机器上,并运行以下导入语句:bcpd 2 . dbo . t2in d : \ t1 . dat-s SERVER 2-u sa-p sa-n .就是这样。我们来解释一下上面的两种说法。BCP是命令,不是解释。DB1。DBO。T1是指定的库名、模式名和表名。Out/in决定方向,Out是表格导出,in是表格导入。Out可以改成queryout,对应的front应该改成query语句,也就是来自DB1。DBO。从DB1 T1到“选择*”。DBO,T1,哪里,以便导出指定的数据。D:\T1.dat是指定的文件路径。文件名和后缀都是随便写的,但我只是习惯了,因为我经常导出多个表的BCP,命名规则方便按表名拼BCP语句。-S -U -P分别指定实例名、用户名和密码。如果您有权限,out需要select权限,in需要SELECT和INSERT权限,如果您指定了一些特殊选项,例如按原样插入标识列,您还需要ALTER TABLE权限。-n是指定的格式。这里指定了原生格式(-n),数据将以十六进制格式存储在文件中,不存在大文本干扰格式的问题。只要两个表的结构完全一样,就会成功。
还有一些其他的格式,比如-c,用来导入不同类型的数据库(比如MYSQL或者ORACLE),会导出为标准的文本格式,但是这样会造成一些字符乱码、不规则的大文本干扰导入,所以我在不注意数据文件内容的时候总是使用-n格式。此外,还有一些扩展参数,比如添加-E,按原样打开identity列的插入,用来按原样复制带有IDENTITY列的表。-b指定批处理大小,-F和-L指定开始和结束行。如果你想知道,可以去MSDN的描述自己去找,所以我就不抄了,只提供原地址:http://msdn.microsoft.com/zh-cn/library/ms162802.aspx注意到后面的参数除了BCP和IN/OUT都是区分大小写的,-s不应该写成-S,而且-n和-N有不同的意思。——有了分割线,你就这么自信。在许多情况下,有许多表需要导出,甚至是整个数据库。这时候我一般先用系统表找出表名,或者把需要的表名全部写在EXCEL里,然后复制粘贴到CMD里,就可以导入导出多个表了。以下是从BCP导出的库内所有表的生成SQL的一部分,供您参考:从d:“名称”中选择“bcpdb 1 . dbo . name”。dat-s server1-u sa-p sa-n ','截断表'名称,Bcpdb2.dbo. ' name '在d : ' name '中。来自sys的dat-s SERVER2-u sa-p sa-n。表按名称排序,将第一句复制到cmd,导出所有文件,将文件复制到energy library目标库的机器上,在SSMS运行TRUNCATE清空server2上所有要导入的表,然后运行第二个BCC我一直在做这个,在结构一致的情况下,到目前为止还没有问题。另一种方法:使用SSMS的生成脚本功能,从选项中选择生成数据脚本(2008与R2不同,一个是是和否,另一个是三个选项:生成、生成和数据、数据),可以生成表中所有的INSERT语句,也可以原样复制。对于大数据量,生成的脚本也很大,一般可以使用1W行以下的数据。
版权声明:MS SQL数据库导出按id批量导出数据 BCP工具很实用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。