首页 > 编程技术 > php

SQL导出到MYSQL的简单方法

发布时间:2016-11-25 16:40

  从sql导出到mysql的方法很多,现介绍一种无需编程,直接利用sql和mysql里的图形界面进行导入导出的简单方法。
  前提是已经安装了sqlserver客户端和mysql的图形界面管理工具phpmyadmin。
  在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver 注册,进行对sqlserver的连接。准备妥当后,下面就开始了:
  首先打开数据转换服务,新建包,打开DTS界面,在连接中选择数据源进行配置。再选择将要转换到的目的文件,这里我选的 Textfile(destination),选择好文件的存放位置之后,我们来新建一个任务。这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。
  执行任务,提示成功。保存任务。然后在新建的任务上导出数据,有向导提示,其中一项选择“从源数据库复制表和视图”。
  这一步已经把数据导出到目的文件中。
  下一步在mysql中新建表,与将要导入的结构保持一致时,直接选取“从文本文件中提取数据,插入到数据表:”,将选项添好后,“发送”就可以了,浏览一下,数据已导入了。若要导入的表已经存在,且属性名也不同,这时就先建一个与要导入的数据相同结构的表并导入数据(按刚才的进行就可以了),然后在mysql中导出“数据和结构”,得到sql语句,将其在文本文件中编辑,利用文本编辑器的替换功能,将表名修改,列名加入,最后将其粘贴在要导入表的执行sql语句的地方,执行一下,数据便导入了。
  若过程中出现错误,请仔细检查配置的选项,确保正确。


  1. 通过工具DTS的设计器进行导入或导出
  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'
收集和分发数据是网络管理的职责之一,而且必须确保这些数据的准确性和安全性。不管它们是什么操作系统,数据库服务器需要特殊的管理以保证操作上的安全性。

良好的安全性开始于安装。现在让我们看一看如何才能在开始的时候就获得SQL Server的安全性。
安装
在开始安装之前,先定位到终端路由器或者防火墙,将UDP和TCP端口1433和1434指明为SQL Server的IP地址,这将有助于在安装的时候防止SQL injection弱点。
请不要在一个域控制器(domain controller)上安装SQL Server,一个程序的弱点可以导致危及整个域。在安装程序的转移数据之前,你最好在一个具有完全补丁修补之后的操作系统上安装SQL Server。
SQL Server服务应该运行于独立的当地帐号之下。这样,即使如果有人破坏程序,其它的服务器也可以不受影响。
如果服务器想要为一个基于Windows的网络服务,与服务器的所有连接都需要Windows认证。这将使得用户不再有必要记住其它连接的密码,从而减轻了用户的负担。

服务帐号
在通常情况下,服务帐号十分注意分配给它们的权限。SQL Server使用两种帐号:SQL Server Engine和SQL Server Agent。这两种帐号都作为一个具有常规帐号权限的域用户而运行。
如果你使用SQL Server认证,而不是使用Windows认证,或者如果你的服务器运行的是ActiveX脚本或CmdExec作业(比如,操作系统命令或者.bat,.cmd,.com,或.exe的可执行程序),SQL Server Agent帐号将需要当地Windows管理员权限。
注意:如果你需要改变与SQL Server服务有关的帐号,可以使用SQL Server企业管理者(SQL Server Enterprise Manager)。企业管理者将对SQL Server使用的文件和注册表键设置合适的权限。不要使用控制面板上MMC的Services applet来更改这些帐号。
安装之后

通过运行微软Killpwd.exe程序,可以清除在安装过程中保存在不同安装文件中的纯文本sysadmin密码。
当从新服务器中清除安装文件之后,运行Microsoft Baseline Security Analyzer (MBSA)。这一工具能够扫描和测试安装中产生的问题,这些问题包括:
过多的sysadmin成员都想作为服务器角色。
分配建立CmdExec作业的权限。
空白的或者琐屑的密码。
脆弱的认证方式。
分配给管理者组的过多的权限。
运行于域控制器的系统的SQL Server。
每一组的不合适的配置。
SQL Server服务帐号的不合适的配置。
jackxm(原作)
这段时间用了一下C Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享。
示例代码:
StoredProc1->Params->Clear();
StoredProc1->Params->CreateParam( ftSmallint, "@m1", ptInput);
StoredProc1->Params->CreateParam( ftString, "@m2", ptOutput);
StoredProc1->Params->CreateParam( ftInteger, "@m3", ptOutput);
StoredProc1->Params->CreateParam( ftInteger, "@m4", ptOutput);
StoredProc1->Params->CreateParam( ftInteger, "@m5", ptOutput);

StoredProc1->Params->CreateParam( ftInteger, "Result", ptResult);
StoredProc1->Prepare();
StoredProc1->ExecProc();
问题:调用存储过程的时候总是报错,注意,时在执行StoredProc1->ExecProc()的时候就会报错,其它的地方报的错误的解决方法不再本篇文章中。执行代码报错时的错误信息提示:错误:indicator variable required but not supplied
原因:当在执行的存储过程的时候,如果有一项出项空值的时候,就会发生这样的问题
解决:在存储过程中对产成的空值进行处理,就可以了


access 只能在 windows 下使用这一致命的特性让我深恶痛绝,痛下决心要把 access 转换到 mysql,但是从网上找了很多文章,都没有直接转换的东西。听说可以利用odbc转,就尝试了一下。
 
先安装好mysql,myodbc,建一个mysql的空数据库,在odbc管理中加上这个数据库,指定名称。
 
用access2000打开数据库,然后选导出,选odbc,选机器数据源,选中自己刚才建立好的mysql odbc 数据源,确定后导出。
 
一次只能倒一个表。
 
。。。。。。。。。。
 
终于完了,现在成功了吗?
把程序中的数据源改到刚倒好的mysql odbc上,发现到处都是错误,原来mysql对表的大小写有区分,改了程序后,运行感觉不错,速度也可以。
 
不对,怎么又错了,这个ID怎么是空的???
原来这个倒入的数据库不支持自动递增的功能。

继续到mysql的目录,bin下运行 mysqldump 倒出所有的结构和数据到一个文件 my.sql然后编辑 my.sql,修改所有的 CREATE TABLE 语句,
ID int not null auto_increment, primary key (ID), 这样ID就相当于access中的自动编号数据类型了,在 mysql/bin 下运行mysql,drop掉原来的数据库,再source一下刚才修改过的这个my.sql所有数据恢复进去,好,这下一切搞定,程序比往常要快了许多,尤其是论坛部分。
 
注:此次操作均在 windows 2000 下进行。


标签:[!--infotagslink--]

您可能感兴趣的文章: