设为首页 收藏本站
查看: 1614|回复: 0

[经验分享] sql server 数据导入导出

[复制链接]

尚未签到

发表于 2016-10-30 05:32:41 | 显示全部楼层 |阅读模式
  jackey 总结 2009.07.02
  
  
--使用bcp命令实现数据导入导出
  --2. 如何使用bcp导出数据
--(1) 使用bcp导出整个表或视图。(两种实现方式)
EXEC master..xp_cmdshell  'bcp "CACDB_S1000.dbo.tOperator"  out "d:\currency1.txt"  -c  -U"sa" -P"xxxxxx"'--使用密码连接
EXEC master..xp_cmdshell  'bcp CACDB_S1000.dbo.tOperator  out d:\currency1.txt  -c  -U"sa" -P"xxxxxx"'--使用密码连接
--在使用密码登录时需要将-U后的用户名和-P后的密码加上双引号。
--或
EXEC master..xp_cmdshell 'bcp "CACDB_S1000.dbo.tOperator" out "d:\currency2.txt"   -c  -T' --使用信任连接
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator out d:\currency3.txt   -c  -T' --使用信任连接
--(2) 对要导出的表进行过滤
--bcp不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数。通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。(通过查询sql过滤)
EXEC master..xp_cmdshell 'bcp "SELECT TOP 5 * FROM CACDB_S1000.dbo.tOperator" queryout c:\currency4.txt  -c  -U"sa" -P"xxxxxx"'
--bcp还可以通过简单地设置选项对导出的行进行限制 (通过设置第一行,最后一行参数过滤)
EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM CACDB_S1000.dbo.tOperator" queryout d:\currency5.txt  -F 10  -L 13  -c  -U"sa" -P"xxxxxx"'
--这条命令使用了两个参数-F 10和-L 13,表示从SELECT TOP 20 * FROM CACDB_S1000.dbo.tOperator所查出来的结果中取第10条到13条记录进行导出。
  
--3. 如何使用bcp导出格式文件
--(1)
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator format nul -f d:\currency_format1.fmt  -c -T'
--上述命令将currency表的结构生成了一个格式文件currency_format1.fmt
--这个格式文件记录了这个表的字段(共3个字段)类型、长度、字符和行分割符和字段名等信息。
--(2) bcp导出xml格式的文件
EXEC master..xp_cmdshell 'bcp "select * from CACDB_S1000.dbo.tPlanManager for xml auto, elements " queryout d:\a1.xml -c  -Usa -Pxxxxxx'
  
---4. 如何使用bcp导入数据
--复制相同的表结构
SELECT TOP 0 * INTO CACDB_S1000.dbo.tOperator1 FROM CACDB_S1000.dbo.tOperator
--将数据导入到表中
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator1 in d:\currency1.txt   -c  -T'
--导入数据也同样可以使用-F和-L选项来选择导入数据的记录行
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator1 in d:\currency1.txt   -c -F 10  -L 13 -T'
  --使用普通的格式文件
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator1 in d:\currency1.txt   -F 10  -L 13 -c  -f d:\currency_format1.fmt -T'
--使用xml格式的格式文件
EXEC master..xp_cmdshell 'bcp CACDB_S1000.dbo.tOperator1 in d:\currency1.txt   -F 10  -L 13 -c  -x -f d:\currency_format2.fmt -T'
  
  
--使用Transact-SQL进行数据导入导出
--(1).使用SELECT INTO导出数据
--注: 在使用SELECT INTO语句时,INTO后跟的表必须在数据库不存在,否则出错.
  --复制表结构同时将旧表中的数据导入新表中
SELECT * INTO tOperator2 FROM tOperator
--把数据复制到另外的数据库中
SELECT * INTO CACDB_Log.dbo.tOperator2 FROM tOperator
--(2).使用INSERT INTO 和 UPDATE插入和更新数据
INSERT INTO table1 SELECT * FROM table2
--或
INSERT INTO db2.dbo.table1 SELECT * FROM table2
  
UPDATE table1 SET table1.f1=table2.f1, table1.f2=table2.f2 FROM table2
WHERE table1.f1=table2.f1
  --2. 使用OPENDATASOURCE和OPENROWSET实现在SQL Server数据库和SQL Server数据库之间的数据导入导出
--(1).SQL Server数据库和SQL Server数据库之间的数据导入导出。
  --导入数据
SELECT  * INTO tOperator3
    FROM  OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=127.0.0.1;User ID=sa;Password=xxxxxx'
         ).CACDB_S1000.dbo.tOperator
  --导出数据
 INSERT INTO OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=127.0.0.1;User ID=sa;Password=xxxxxx'
         ).CACDB_Log.dbo.tOperator2 select * from CACDB_S1000.dbo.tOperator 
  --在这条语句中OPENDATASOURCE(...)可以理解为SQL Server的一个服务,.CACDB_S1000.dbo.tOperator是这个服务管理的一个数据库的一个表tOperator 。使用INSERT INTO时OPENDATASOURCE(...)后跟的表必须存在,并且如果表中的字段为自增字段,则必须先改成非自增字段在插入,否则插入失败。
--导出数据(用OPENROWSET函数实现)
INSERT INTO OPENROWSET('SQLOLEDB','127.0.0.1';'sa';'xxxxxx', 'select * from CACDB_Log.dbo.tOperator2')
  SELECT * FROM CACDB_S1000.dbo.tOperator 
  
  
SELECT * INTO CACDB_Log.dbo.tOperator2 FROM
   OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=d:\')...[data#txt]
  
INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=d:\')...[data#txt] SELECT * FROM CACDB_Log.dbo.tOperator2
  
  
  存储过程-----导出数据到文件
  CREATE     PROCEDURE  jackeytest11
  
AS
  declare @bcpString varchar(1000)
set @bcpString='BCP  "select * from  CACDB_S1000.dbo.tYHJBXX"  queryout "d:\jackeytest.txt" -c -S "localhost" -U "sa" -P "xxxxxx"'
EXEC master..xp_cmdshell @bcpString
GO

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293035-1-1.html 上篇帖子: 如何部署SQL Server 2005 下篇帖子: SQL Server 数据类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表