如何:从“远程”表将数据导入“本地”表
时间:2011-09-20
来源:互联网
想实现一个类似如下的功能:
INSERT INTO local_table SELECT * FROM remote_table where ...
其中,local_table是本地(内网)的一个数据库中的表,
remote_table是远程(公网)的一个数据库中的表,
两张表的结构完全一样。
请问,该如何实现呢?
用sql或其它语言都行。。。
作者: LeonTown 发布时间: 2011-09-20
作者: lzd_83 发布时间: 2011-09-20
作者: WWWWA 发布时间: 2011-09-20
作者: LeonTown 发布时间: 2011-09-20
作者: vipper23 发布时间: 2011-09-20
建个FEDERATED 表,再访问
示例
CREATE TABLE xxx_b (
id INT(20) NOT NULL AUTO_INCREMENT,
username VARCHAR(32) NOT NULL DEFAULT '',
password VARCHAR(32),
PRIMARY KEY (id)
)
ENGINE=FEDERATED
CONNECTION='mysql://broot:[email protected]:3306/dbname/b表';
作者: wwwwb 发布时间: 2011-09-20
作者: rucypli 发布时间: 2011-09-20
作者: wwwwb 发布时间: 2011-09-20
作者: fh13760184 发布时间: 2011-09-20
用MYSQLDUMP导出,再导入到本地表中,再做处理
导入导出具体怎么做啊?
作者: LeonTown 发布时间: 2011-09-20
存储过程 可以远程的 前提是给权限
这个存储过程的代码怎么写呢?
作者: LeonTown 发布时间: 2011-09-20
MYSQLDUMP可以把远程的记录导出,然后再导入到本地数据库。
mysqldump 的用法,可以参考手册中的描述和例子。
8.8. mysqldump:数据库备份程序
mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。
如果你在服务器上进行备份,并且表均为MyISAM表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。参见8.9节,“mysqlhotcopy:数据库备份程序”。
有3种方式来调用mysqldump:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database DB1 [DB2 DB3...]
shell> mysqldump [options] --all--database
如果没有指定任何表或使用了---database或--all--database选项,则转储整个数据库。
要想获得你的版本的mysqldump支持的选项,执行mysqldump ---help。
如果运行mysqldump没有--quick或--opt选项,mysqldump在转储结果前将整个结果集装入内存。如果转储大数据库可能会出现问题。该选项默认启用,但可以用--skip-opt禁用。
如果使用最新版本的mysqldump程序生成一个转储重装到很旧版本的MySQL服务器中,不应使用--opt或-e选项。
mysqldump支持下面的选项:
· ---help,-?
显示帮助消息并退出。
· --add-drop--database
在每个CREATE DATABASE语句前添加DROP DATABASE语句。
· --add-drop-tables
在每个CREATE TABLE语句前添加DROP TABLE语句。
· --add-locking
用LOCK TABLES和UNLOCK TABLES语句引用每个表转储。重载转储文件时插入得更快。参见7.2.16节,“INSERT语句的速度”。
· --all--database,-A
转储所有数据库中的所有表。与使用---database选项相同,在命令行中命名所有数据库。
· --allow-keywords
允许创建关键字列名。应在每个列名前面加上表名前缀。
· ---comments[={0|1}]
如果设置为 0,禁止转储文件中的其它信息,例如程序版本、服务器版本和主机。--skip—comments与---comments=0的结果相同。 默认值为1,即包括额外信息。
· --compact
产生少量输出。该选项禁用注释并启用--skip-add-drop-tables、--no-set-names、--skip-disable-keys和--skip-add-locking选项。
· --compatible=name
产生与其它数据库系统或旧
作者: ACMAIN_CHM 发布时间: 2011-09-20
引用 7 楼 wwwwb 的回复:
用MYSQLDUMP导出,再导入到本地表中,再做处理
导入导出具体怎么做啊?
mysqldump -uroot -p >123.txt
mysql -uroot -p <123.txt
作者: wwwwb 发布时间: 2011-09-20
select ..INTO OUTFILE 将表中记录查询输出到文件,然后再从数据文件 LOAD DATA INFILE 到表中。
13.2.5. LOAD DATA INFILE语法
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...)]
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。
要了解有关INSERT和LOAD DATA INFILE的效率的对比和有关LOAD DATA INFILE加速的更多信息,请参见7.2.16节,“INSERT语句的速度”。
由character_set_database系统变量指示的字符集被用于解释文件中的信息。SET NAMES和character_set_client的设置不会影响对输入的解释。
注意,目前不能载入UCS2数据文件。
您也可以通过使用mysqlimport应用程序载入数据文件;通过向服务器发送一个LOAD DATA INFILE语句实现此功能。--local选项用于使mysqlimport从客户主机中读取数据文件。如果客户端和服务器支持压缩协议,则您可以指定—compress选项提高在慢速网络中的性能。请参见8.10节,“mysqlimport:数据导入程序。
如果您使用LOW_PRIORITY,则LOAD DATA语句的执行被延迟,直到没有其它的客户端从表中读取为止。
如果一个MyISAM表满足同时插入的条件(即该表在中间有空闲块),并且您对这个MyISAM表指定了CONCURRENT,则当LOAD DATA正在执行时,其它线程会从表中重新获取数据。即使没有其它线程在同时使用本表格,使用本选项也会略微影响LOAD DATA的性能。
如果指定了LOCAL,则被认为与连接的客户端有关:
· 如果指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。
· 如果LOCAL没有被指定,则文
作者: ACMAIN_CHM 发布时间: 2011-09-20
作者: ACMAIN_CHM 发布时间: 2011-09-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28