怎么把mysql里一个数据库的数据用php导入到另一个数据库中?
我要做一次系统升级,不用原来的数据库,用新的数据库,并且在导入的时候修改一部分数据,求php手写源码比如:A库的a表导入到B库的b表中,并且在导入的时候修改一个tid的内...
我要做一次系统升级,不用原来的数据库,用新的数据库,并且在导入的时候修改一部分数据,求php手写源码
比如:A库的a表导入到B库的b表中,并且在导入的时候修改一个tid的内容,只要手写的代码
我修改tid很多值,而且旧的值需要和新值对应,数据比较大,在1个多G左右 展开
比如:A库的a表导入到B库的b表中,并且在导入的时候修改一个tid的内容,只要手写的代码
我修改tid很多值,而且旧的值需要和新值对应,数据比较大,在1个多G左右 展开
5个回答
展开全部
目录内容
一.前言
二.错误修正
三.开始备份
四.如何回存
五.MySQL线上备份
一.前言
正当我在网上快乐的冲浪,在酷!学园快乐的灌口水时,竟蹦出一页 "phpBB critical error",查询 Database 出现错误的讯息,中断了各学员在各系版唇枪舌战,热烈的讨论,虽然过了不久,系统管理工友把网页修好,但开始连续几个星期,phpBB 讨论区有时还是很容易挂掉,频率大约是一至二周一次,通常都是在周末大家最闲的时侯发生的,幸好此时刚好世界杯足球赛正好开打,不能到学园灌水,最少还有足球赛可以看.
当时修护的方式,是将 MySQL 服务停止,再把前一次可用的DB档案盖回去, 然后再重新启动 MySQL 服务来测试 phpBB 是否正常,这样子的作法通常都有效,但总是会遗失某一段时间内的文章,这不是大家所希望的...
为了保存许多珍贵的资料和学园们恶心的口水,我开始著手准备 DB 的备份工作,准备重建这个有问题 DB ,更为将来校园的迁址作 DB 移转准备.
(DB: Database的简称,以下都以 DB 取代 Database,phpBB: 酷!学园讨论区系统的软体名称)
二.错误修正
花了一些时间熟悉主机的环境后,我开始寻找错误在那里...
检测 MySQL 内 phpBB 的 DB 后发现,有个 users 的 table 是有问题的,使用 myisamchk 尝试去修护,发现还不行用预设方式修护,还要多加个 "-o"的参数才行,在使用 myisamchk 时,为避免还有用户来存取 DB ,最好是能够将 MySQL 服务停止,不然最少也要下个 "mysqladmin flush-tables" 后,
再作 myisamchk 指令,像:
myisamchk -o phpbb2_users.MYI
这个动作,可能要作个2~3次,直到没有错误的讯息出现!
修护完,重新启动 MySQL 服务后,就可以用 mysql 这个 client 的指令,去 Query 一下 DB 内容,测试看是否正常.很幸运的,DB的部份在此时,运作是正常的.
当然,在你要备份之前,假如能先检测资料是否正确,那是最好不过了, 假如有需要,可以把检测的工作,排定在备份工作之前,但是记得,这个检测DB 的动作不要排定在 DB 高用量的那段时间,深夜无人上线的时段是个不错的选择!
三.开始备份
phpBB 讨论区的资料档,主要有两个部份,就是 php 主程式和 DB 内容,php 主程式的备份就比较简单,只要把全部档案 tar 起来就行了,就像:
tar cvfz phpbb2_20020601.tgz phpbb
(上面的 phpbb 是指 phpBB 的 php 网页程式存放目录.)
以后有改到 phpBB 网页程式部份再重新备份一次就行,它的内容资料都写在DB 内,所以 php 程式档部份异动性应该不大.
再来就是 MySQL DB 部份了,预设 MySQL 的 DB 档案是存在 /var/lib/mysql 内,以 DB 名称为目录,目录内就是该 DB 的所有资料,像 phpbb2 这个 DB,就是存在 /var/lib/mysql/phpbb2 内,在备份前,因为怕资料尚未完全写入磁碟,而且 MySQL 会 Lock 在使用的 DB 档案,所以应该是要先把 MySQL 先 Shutdown 一下,整个备份的程序可以下像下面的指令去完成:
/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_20020601.tgz phpbb2
/etc/rc.d/init.d/mysqld start
(上面的 phpbb2 是指存放 phpbb2 这个 DB 的目录.)
Ok!这样就完成了! (什麽?就这样! 3行就结束了?!)
对!这样就可以了! 不过要注意的是,怕 DB 内每个 Tables 间的资料有关关联性,所以最好是把整个 DB 一次备起来,单独只备哪个 Tables 的档案,以后回存时,怕会有资料关联不一致的问题!
以酷!学园的口水讨论区为例,有21000笔左右的文章加上1200名注册会员,资料库整个 tar 起来大约30几 MB 左右,每天备份,以一周为周期来计算,备份大约只需要(35*7=245) 200 多 MB 左右的空间,一星期的备份烧在一张光碟还够!
四.如何回存
phpBB 讨论区的回存,只需把档案解回原来存放网页的路径就可以,用以下指令解开:
tar xvfz phpbb2_20020601.tgz
DB 发生错误而要回存时,其实也不难,先找出最近一次完整正常的备份,先把现在错误的网页或 DB 先更名或 tar 起来,再把好的备份给解开回原来目录位置就行了,需要注意的是, MySQL 服务最好也是要先停止,回存完成后再启动服务,回存 DB 的整个程序可能像下面:
/etc/rc.d/init.d/mysqld.stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_20020601.tgz
/etc/rc.d/init.d/mysqld.start
然后再去测试一下网页及资料库! 看使用上是否正常就行了...
五.MySQL线上备份
使用像上面的"档案"方式备份是个不错的方法,它最少可以保持该主机某个时间点的完整档案备份,但还是有一些问题需要考虑到,有些主机就不只建立一个 DB 而已,总不能为了备份某个 DB 而把整个MySQL 服务停止,备份档案的方式,回存在原主机上一定适用,但假如 MySQL 版本升级,或是在那天,该网页空间需迁机移机到别的主机时,那就没人敢保证备出来的资料档可以用,所以我们可以考虑另一种备份的方式,是使用MySQL 本身提供的功能: "MySQL Data Dump",指令是 "mysqldump".
一.前言
二.错误修正
三.开始备份
四.如何回存
五.MySQL线上备份
一.前言
正当我在网上快乐的冲浪,在酷!学园快乐的灌口水时,竟蹦出一页 "phpBB critical error",查询 Database 出现错误的讯息,中断了各学员在各系版唇枪舌战,热烈的讨论,虽然过了不久,系统管理工友把网页修好,但开始连续几个星期,phpBB 讨论区有时还是很容易挂掉,频率大约是一至二周一次,通常都是在周末大家最闲的时侯发生的,幸好此时刚好世界杯足球赛正好开打,不能到学园灌水,最少还有足球赛可以看.
当时修护的方式,是将 MySQL 服务停止,再把前一次可用的DB档案盖回去, 然后再重新启动 MySQL 服务来测试 phpBB 是否正常,这样子的作法通常都有效,但总是会遗失某一段时间内的文章,这不是大家所希望的...
为了保存许多珍贵的资料和学园们恶心的口水,我开始著手准备 DB 的备份工作,准备重建这个有问题 DB ,更为将来校园的迁址作 DB 移转准备.
(DB: Database的简称,以下都以 DB 取代 Database,phpBB: 酷!学园讨论区系统的软体名称)
二.错误修正
花了一些时间熟悉主机的环境后,我开始寻找错误在那里...
检测 MySQL 内 phpBB 的 DB 后发现,有个 users 的 table 是有问题的,使用 myisamchk 尝试去修护,发现还不行用预设方式修护,还要多加个 "-o"的参数才行,在使用 myisamchk 时,为避免还有用户来存取 DB ,最好是能够将 MySQL 服务停止,不然最少也要下个 "mysqladmin flush-tables" 后,
再作 myisamchk 指令,像:
myisamchk -o phpbb2_users.MYI
这个动作,可能要作个2~3次,直到没有错误的讯息出现!
修护完,重新启动 MySQL 服务后,就可以用 mysql 这个 client 的指令,去 Query 一下 DB 内容,测试看是否正常.很幸运的,DB的部份在此时,运作是正常的.
当然,在你要备份之前,假如能先检测资料是否正确,那是最好不过了, 假如有需要,可以把检测的工作,排定在备份工作之前,但是记得,这个检测DB 的动作不要排定在 DB 高用量的那段时间,深夜无人上线的时段是个不错的选择!
三.开始备份
phpBB 讨论区的资料档,主要有两个部份,就是 php 主程式和 DB 内容,php 主程式的备份就比较简单,只要把全部档案 tar 起来就行了,就像:
tar cvfz phpbb2_20020601.tgz phpbb
(上面的 phpbb 是指 phpBB 的 php 网页程式存放目录.)
以后有改到 phpBB 网页程式部份再重新备份一次就行,它的内容资料都写在DB 内,所以 php 程式档部份异动性应该不大.
再来就是 MySQL DB 部份了,预设 MySQL 的 DB 档案是存在 /var/lib/mysql 内,以 DB 名称为目录,目录内就是该 DB 的所有资料,像 phpbb2 这个 DB,就是存在 /var/lib/mysql/phpbb2 内,在备份前,因为怕资料尚未完全写入磁碟,而且 MySQL 会 Lock 在使用的 DB 档案,所以应该是要先把 MySQL 先 Shutdown 一下,整个备份的程序可以下像下面的指令去完成:
/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_20020601.tgz phpbb2
/etc/rc.d/init.d/mysqld start
(上面的 phpbb2 是指存放 phpbb2 这个 DB 的目录.)
Ok!这样就完成了! (什麽?就这样! 3行就结束了?!)
对!这样就可以了! 不过要注意的是,怕 DB 内每个 Tables 间的资料有关关联性,所以最好是把整个 DB 一次备起来,单独只备哪个 Tables 的档案,以后回存时,怕会有资料关联不一致的问题!
以酷!学园的口水讨论区为例,有21000笔左右的文章加上1200名注册会员,资料库整个 tar 起来大约30几 MB 左右,每天备份,以一周为周期来计算,备份大约只需要(35*7=245) 200 多 MB 左右的空间,一星期的备份烧在一张光碟还够!
四.如何回存
phpBB 讨论区的回存,只需把档案解回原来存放网页的路径就可以,用以下指令解开:
tar xvfz phpbb2_20020601.tgz
DB 发生错误而要回存时,其实也不难,先找出最近一次完整正常的备份,先把现在错误的网页或 DB 先更名或 tar 起来,再把好的备份给解开回原来目录位置就行了,需要注意的是, MySQL 服务最好也是要先停止,回存完成后再启动服务,回存 DB 的整个程序可能像下面:
/etc/rc.d/init.d/mysqld.stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_20020601.tgz
/etc/rc.d/init.d/mysqld.start
然后再去测试一下网页及资料库! 看使用上是否正常就行了...
五.MySQL线上备份
使用像上面的"档案"方式备份是个不错的方法,它最少可以保持该主机某个时间点的完整档案备份,但还是有一些问题需要考虑到,有些主机就不只建立一个 DB 而已,总不能为了备份某个 DB 而把整个MySQL 服务停止,备份档案的方式,回存在原主机上一定适用,但假如 MySQL 版本升级,或是在那天,该网页空间需迁机移机到别的主机时,那就没人敢保证备出来的资料档可以用,所以我们可以考虑另一种备份的方式,是使用MySQL 本身提供的功能: "MySQL Data Dump",指令是 "mysqldump".
展开全部
建议你还是用mysqldump最为稳妥,执行好这个命令后,将会产生一个sql的文本脚本,根据你需要把它的相应的脚本查找替换一下,然后在另一个MySQL数据库上恢复数据库即可,而且这样的方法也支持跨版本的导入。数据的准确性、稳定性都是有保障的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不就升级一次吗?要源码做什么?你要升级系统的话和数据库没有关系啊。如果非要转换,到网上随便找一个转换工具就行,现在数据库转换工具一大堆。
再有你说的改变字段问题给你提供个办法,我们开发系统时用的:原来是mysql要把它转换为oracle,有些关键字像uid在mysql里可以,在oracle里就不行,最后要把uid改为userid 字段。我们就把数据库文件用记事本打开,用userid替换uid。在程序里用dreamweaver找开程序替换,不过这个要全匹配,不然像guide这个单词就会被替换为guserid
再有你说的改变字段问题给你提供个办法,我们开发系统时用的:原来是mysql要把它转换为oracle,有些关键字像uid在mysql里可以,在oracle里就不行,最后要把uid改为userid 字段。我们就把数据库文件用记事本打开,用userid替换uid。在程序里用dreamweaver找开程序替换,不过这个要全匹配,不然像guide这个单词就会被替换为guserid
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只是一句SQL?
想想。。。
库和库之前。。。
一条。。。我难。。。
想想。。。
库和库之前。。。
一条。。。我难。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个非要用PHP吗?很多ETL工具都可以完成
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询