DTS的设计器功能强大,支持多任务,也是可视化界面,容易 *** 作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQL Server Enterprise Manager中,展开服务器左边的 ,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很细,可以灵活的在不同数据源之间复制数据,很方便的。而且可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的Data Transformation Services,选Local Packages,在右边的窗口中右击,选New Package,就打开了DTS设计器。值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。
其实建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化。
2. 利用Bcp工具
这种工具虽然在SQL Server7的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQL Server早期版本的人。Bcp有局限性,首先它的界面不是图形化的,其次它只是在SQL Server的表(视图)与文本文件之间进行复制,但它的优点是性能好,开销小,占用内存少,速度快。有兴趣的朋友可以查参考手册。
3. 利用备份和恢复
先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复 *** 作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。这种方法可以完全恢复数据库,包括外键,主键,索引。
4. 直接拷贝数据文件
把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = ’test’,
@filename1 = ’d:mssql7data est_data.mdf’,
@filename2 = ’d:mssql7data est_log.ldf’
这样就把test数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = ’test’
EXEC sp_attach_single_file_db @dbname = ’test’,
@physname = ’d:mssql7data est_data.mdf’
这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。
5. 在应用程序中定制
可以在应用程序(PB、VB)中执行自己编写的程序,也可以在Query Analyzer中执行,这种方法比较灵活,其实是利......
导出数据库命令:mysqldump -u root -p mydb2 >e:\mydb.sql
把数据库mydb2导出到e盘的mydb.sql
注意:在dos下进入mysql安装的bin目录下,但是不要登陆。
导入数据库命令:
mysqldump -u root -p mydb2 <e:\mydb.sql
把数据库e盘的mydb.sql导入到mydb2
注意:要先新建mydb2 然后使用导入语句
oracle 用户创建 数据库的导入导出imp/exp
可以在SQLPLUS.EXE或者DOS(命令行)中执行执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
创建用户
给用户增加导入数据权限的 *** 作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
执行示例:
F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp 17jquery.com
下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
exp system/manager@TEST file=d:daochu.dmp full=y
exp fang/fang@ORCL file=d:oais20100401.dmp full=y
exp oais/oais@ORCL file=d:oais_mj.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
exp fang/fang@ORCL file=d:oais20100401_essmenu.dmp tables=(essmenu)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。 一起jquery,17jquery
数据的导入
1 将D:daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:daochu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。 MSSQL的导入导出有三种方法,不可以在cmd模式下进行:1.使用Transact-SQL进行数据导入导出 我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。 SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同 当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。 在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并 *** 作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。它们的功能基本上相同,不同之处主要有两点。 2. 使用命令行BCP导入导出数据 很多大型的系统不仅仅提供了友好的图形用户接口,同时也提供了命令行方式对系统进行控制。在SQL Server中除了可以使用SQL语句对数据进行 *** 作外,还可以使用一个命令行工具BCP对数据进行同样的 *** 作。BCP是基于DB-Library 客户端库的工具。它的功能十分强大,BCP能够以并行方式将数据从多个客户端大容量复制到单个表中,从而大大提高了装载效率。但在执行并行 *** 作时要注意的是只有使用基于 ODBC 或 SQL OLE DB 的 API 的应用程序才可以执行将数据并行装载到单个表中的 *** 作。 BCP可以将SQL Server中的数据导出到任何OLE DB所支持的数据库的,如下面的语句是将authors表导出到excel文件中。 bcp pubs.dbo.authors out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password" BCP不仅能够通过命令行执行,同时也可以通过SQL执行,这需要一个系统存储过程xp_cmdshell来实现,如上面的命令可改写为如下形式。 EXEC master..xp_cmdshell 'bcp pubs.dbo.authors out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password"' 3. 使用数据转换服务(DTS)导入导出数据 DTS是SQL Server中导入导出数据的核心,它除有具有SQL和命令行工具BCP相应的功能外,还可以灵活地通过VBScript、JScript等脚本语言对数据进行检验、净化和转换。 SQL Server为DTS提供了图形用户接口,用户可以使用图形界面导入导出数据,并对数据进行相应的处理。同时,DTS还以com组件的形式提供编程接口,也就是说任何支持com组件的开发工具都可以利用com组件使用DTS所提供的功能。DTS在SQL Server中可以保存为不同的形式,可以是包的形式,也可以保存成Visual Basic源程序文件,这样只要在VB中编译便可以使用DTS com组件了。 DTS和其它数据导入导出方式最大的不同就是它可以在处理数据的过程中对每一行数据进行深度处理。以下是一段VBScript代码,这段代码在处DTS理每一条记录时执行,DTSDestination表示目标记录,DTSSource表示源记录,在处理“婚姻状况”时,将源记录中的“婚姻状况”中的0或1转换成目标记录中“已婚”或“未婚”。 Function Main() DTSDestination("姓名") = DTSSource("姓名") DTSDestination("年龄") = DTSSource("年龄") If DTSDestination("婚姻状况") = 1 Then DTSDestination("婚姻状况") = "已婚" Else DTSDestination("婚姻状况") = "未婚" End If Main = DTSTransformStat_OK End Function
方法一:1.导表结构
使用MySQL生成create脚本的方法。找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的。
2.导表数据
在MSSQL端使用bcp导出文本文件:
bcp "Select * FROM dbname.dbo.tablename" queryout tablename.txt -c -Slocalhostdb2005 -Usa
其中""中是要导出的sql语句,-c指定使用t进行字段分隔,使用n进行记录分隔,-S指定数据库服务器及实例,-U指定用户名,-P指定密码.
在MySQL端使用mysqlimport 导入文本文件到相应表中
mysqlimport -uroot -p databasename /home/test/tablename.txt
其中-u指定用户名,-p指定密码,databasename指定数据库名称,表名与文件名相同。
方法二:
MYSQL Migration Toolkit 应该是可以用的。
1、把MySQL Migration Toolkit安装在运行有MS SQL server的机器上
2、此机器还需要安装java环境和jdbc驱动:
java环境去sun网站上下载,jdbc驱动去MySQL网站上下载(mysql-connector-java-5.0.5.zip),并且设置好路径的环境变量
3、如果你原来的数据库里有中文字符,必须显式设置几个有关字符集的地方:
A. Source Database 选择Database System为MS SQL:
这里需要手动写jdbc连接串:点击界面下方的Advanced键,出现一个方框,提示输入 "Connection String:",在这里输入如下格式:
jdbc:jtds:sqlserver://IP:PORT/YOURDB_NAMEuser=USERpassword=PASSWDcharset=gb2312(or gbk)domain=
其中,大写 IP, PORT, YOURDB_NAME,USER, PASSWD都是要用实际MS SQL Server服务器的ip和端口,数据库名,数据库用户名,密码填写
B. Target Database 同样需要手动编辑jdbc连接串:
点击界面下方的Advanced键,出现一个方框,提示输入"Connection String:"
在这里输入如下格式:
jdbc:mysql://IP:3306/?user=USER&password=PASSWD&useServerPrepStmts=false&characterEncoding=gbk
其中,大写 IP, USER, PASSWD都是要用实际MySQL服务器的ip,数据库用户名,密码填写
C. 选择sql server的schema和表
D. Object Mapping
修改"Migration of type MSSQL Table":
点击"Set Parameter",选择"User defined", 设置"charset=gb2312(or gbk), collation=gb2312(or gbk)_chinese_ci"
E. 之后没有别的选项,一直到最后
F. 移植完以后,用图形工具(MySQL query browser、SQLyog等)或用mysql客户端(命令行)联接,都可以看到中文。
在客户端(命令行),先执行
mysql>set names gb2312(or gbk)
4、由于MS SQL server和MySQL在语法格式和数据类型定义等方面有一定的差异,所以移植过程不是很简单,可能需要反复几次,修正语法格式和数据类型定义。MySQL Migration toolkit可以让用户手动修改生成的MySQL SQL语句,在其中的"Manual Editing"一节
文章来源于易贤网http://www.ynpxrz.com/n859698c2024.aspx
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)