服务器需要将数据插入到远端某台电脑上的数据库中,
我可不可以直接的访问远端的mysql数据库,然后
使用insert into 语句把数据插入到对方电脑的数据中去?这样方式可取吗?会不会有什么问题?
请指教。

解决方案 »

  1.   

    当然可以的,现在很多项目都是这么做的啊
    做好dump就可以了,出错了大不了全部rollback。。
      

  2.   

    数据库链接Oracle本地要与远程进行连接,要通过数据库链接。1.使用数据库链接进行查询和更新:SELECT * from worker;这样的语句表示在本地进行查询。而对于远程,则需要在语句后加相应的数据库链接。如:SELECT * FROM worker@remote_connect;如果想省去@号后面的字串,可以采用建立一个本地的同义词来实现。如:CREATE SYNONYM WORKER_SYN for WORKER@remote_connect;如果希望进行远程更新的话,类似可以在UPDATE语句中加上远程连接符。如:UPDATE worker@remote_connect 
    SET lodging=’CRANMER’ where lodging=’ROSE HILL’;2.创建数据库链接的语法:创建数据库链接的语法如下:CREATE [PUBLIC] DATABASE LINK remote_connect 
    CONNECT TO username identified by password using ‘connect string’;一般PUBLIC有DBA来创建。个人用户可以不加PUBLIC就是私有的数据库链接。
    Oracle系统可以创建链接,但是连接的数量有限制。缺省的并发数是4(由init.ora文件中的OP_LINKS来限制)。为了建立数据库链接,需要有CREATE DATABASE LINKS 系统权限;要与远程的帐号进行连接还需要有CREATE SESSION普通权限。CREATE database link zhao connect to zhaoyuanjie identified by zhao_yuan_jie
    Using ‘sun450’;这样创建后,可以用下面语句来使用:SELECT * from tst@sun450;需要注意的是,在创建数据库链接时是根据Oracle的Tnsnames.ora参数文件中的连接字符串来填写连接字串。比如上面的连接字串是sun450 。则在tnsmaes.ora中的要有下面的数据项:SUN450 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = s450)
    )
    )
    使用同义词获得本地透明在应用系统的生命周期内,为了方便和维护简便,经常采用建立同义词来实现透明的访问。例1. 没有建立本地透明时的访问:SELECT * FROM north.worker;例2.建立一个同义词,然后进行访问:CREATE SYNONYM WORKER FOR NORTH.WORKER;SELECT * FROM WORKER;
    在实际应用中,为了达到隐藏表的所有权,还可以通过使用数据库链接和同义词来隐藏数据的物理位置。通过使用对应远程端的本地表同义词,可以把另一个逻辑层从应用转移到数据库中。例3.建立一个本地同义词的远程表:CREATE SYNONYM WORKERSKILL
    For WORKERSKILL@remote_connect;3 在视图中使用user伪列Oracle提供一个伪列user, 它可以在创建视图中使用,从而实现对结果的返回的限制。如:CREATE OR REPLACE VIEW emp_lst
    AS select * from emp
    Where ename=user;这样的视图表示,只有使用者的用户名与ename中的名字一样,才能返回相关的记录。
      

  3.   

    干吗不用mysql工具,还可以把sql文件直接导入远程数据库
      

  4.   

    安装mysql的时候还要选上允许远程连接
      

  5.   

    可以的,但mysql默认是没有开启远程控制的,必须添加远程访问的用户。在远端的数据库用root用户登陆,然后:
    grant all privileges on *.* to '用户名'@'%' identified by '密码' with grant option;
    flush privileges;   * 刷新刚才的内容* grant格式说明:grant  权限 on 数据库名.表名 to  用户@登录主机 identified by "用户密码";
                 @ 后面是访问mysql的客户端IP地址(或是 主机名),% 代表任意的客户端;
    如果写成 localhost,则为本地访问。同样也可以为现有的用户设置是否具有远程访问权限。如下:
    use mysql;
    update user set host = '%' where user = '用户名';  (如果写成 host=localhost 那此用户就不具有远程访问权限)
    flush privileges;经过上述设置,你就开启了mysql远程控制,也就可以对数据库进行操作