总结、搜集、疑问贴 关于数据的转移

来源:互联网 发布:java项目视频 编辑:程序博客网 时间:2024/06/08 01:50

【总结+搜集+疑问贴】关于数据的转移
最近看新东西 发现数据转移方法挺多的虾 
我所谓的数据转移其实呢是值 各个类型的 小到表转移到另外一个库 大到不同库之间转移
讨论的方法:
-------------------------------------------------------------------------------------
A 表转移到例外一个库(已经存在的库)
方法1.SQL语句:
--如果是单表的话 ,在目标库newdb里建立相同的表a(结构相同)
insert newdb..a
select * from olddb..a
--多表转移的话的
--【疑惑1】个人觉得用SQL语句比较麻烦 不知道大家有好办法么 ?关于多表用SQL语句转移到另外一个库
方法2 复制订阅
--我知道通过复制订阅是可以将表(单,多表都可以)转移到另外的库的(- -!我失败了)
【疑惑2】我的步骤如下: 
1.我首先配置了分发服务器 每次都在启动代理那里出错了。。为什么 。。有碰到过么? 
2.之后我开启监视器 
3.我创建了一个复制数据库 还有一个容纳该数据库拷贝的新数据库 
4.然后我配置了分布服务器 
5.回头我在看复制监视器 那个状态还是XXX 是错误的 。。。 
6.后面的配置订阅服务器都没做。。
方法3.数据导入导出(是ssis吧?)
----------------------------------------------------------------------------------------
B 库的转移 
1.将一个库附加到另外一个库
--方法1 用SSIS 。注意这里的库 是可以由ACCESS库转移到MSSQL库 
--方法2 。。。(个人知识有限 没了。。)
希望大家能在库的转移这块再多提供几个方法
=-----------------------------------------------------------------------------------
3、 数据导入导出
--我知道BCP可以实现 挺多的 比如导出到TXT文件阿。

 01. 导出整个表或视图

BCP NTS.dbo.T_User out c:/User.txt -c -U"sa" -P"password" --使用密码连接(用户名和密码需要加上双引号)
BCP NTS.dbo.T_User out c:/User.txt -c -T --使用信任连接

 02. 导出SQL语句的目标数据

BCP "SELECT TOP 20 * FROM NTS.dbo.T_User" queryout c:/User.txt -c -U"sa" -P"password"
BCP "SELECT TOP 20 * FROM NTS.dbo.T_User" queryout c:/User.txt -F 10 -L 13 -c -U"sa" -P"password" --导出第10条到13条记录

 03. 导出格式文件

BCP NTS.dbo.T_User format nul -f c:/User_format1.fmt -c -T --把表结构信息导出到User_format1.fmt中
BCP NTS.dbo.T_User format nul -f c:/User_format2.fmt -x -c -T --把表结构信息导出XML中

 04. 导入数据

 在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入

 BCP NTS.dbo.T_User in c:/User1.txt -c -T
BCP NTS.dbo.T_User in c:/User1.txt -c -F 10 -L 13 -T --导入时也可使用-F和-L选项来选择目标数据
BCP NTS.dbo.T_User in c:/User1.txt -F 10 -L 13 -c -f c:/User_format1.fmt -T --使用普通的格式文件
BCP NTS.dbo.T_User in c:/User1.txt -F 10 -L 13 -c -x -f c:/User_format2.fmt -T --使用XML格式的格式文件

05. 实际导出的例子(存储过程)

EXEC master..xp_cmdshell 'BCP SZC.dbo.T_User out c:/test1.csv -c -U"sa" -P"qwert1"' --使用密码连接
EXEC master..xp_cmdshell 'BCP SZC.dbo.T_User out c:/test1.csv -c -T' --使用信任连接

 

4. 其他方法导入导出数据

 01. 导入数据

SELECT * INTO authors1

FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=192.1.1.2; UserID=sa; Password=qwert1').pubs.dbo.authors

 

02. 导出数据

INSERT INTO OPENDATASOURCE('SQLOLEDB', 'Data Source=192.1.1.2; UserID=sa; Password=qwert1').test.dbo.authors

SELECT * FROM pubs.dbo.authors

 INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=c:/')[data#txt] SELECT * FROM text1

 INSERT INTO OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=c:/', [data#txt]) SELECT * FROM text1

03. 导入Excel数据

ELECT * INTO excel FROM OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;DATABASE=c:/book1.xls' )[Sheet1$]

 
04. 导入到Excel

INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;DATABASE=c:/book1.xls' )[Sheet1$] SELECT * FROM excel

其他方法还有么?

----------------------------------------------------------------------------------------------------------------------------

大家都讨论讨论吧 
关于我上面的有关数据转移的方法 我上面肯定说的很不全 方法也许也有错误 毕竟我才刚看 
希望大家指出错误 提供好方法 谢谢了!

原创粉丝点击