mysql数据库传输数据
一、一般步骤
1、用phpADMIN生成CSV格式文件
以PHP+MySQL模式建立个人主页的读者,在自己的机器上都有PHP+MySQL环境吧?就在这个环境下,用phpADMIN生成以分号为分隔符的dotmud.csv文件。
2、将dotmud.csv文件通过FTP上传到服务器。
3、上传data.php程序(程序附后),在浏览器调用data.php程序,将dotmud.csv文件的内容加入到数据库。
二、特殊处理
一般的数据,通过上述步骤,基本可以顺利上传。但对于包含特殊字符的数据(比如数据库记录中包含换行符、单引号、分号),就要做些特殊的处理。
1、换行符的处理
PHP的fgetcsv()函数以换行符作为每行的结束标志。如果MySQL数据表的记录包含换行符,fgetcsv()就不能完整读取记录行。
笔者的解决方法是修改phpADMIN的lib.inc.php3文件(读者也可以不修改phpADMIN文件,而是用其他方法直接加工phpADMIN生成的dotmud.csv文件,达到同样的效果)的get_table_csv()函数:
在 $schema_insert=ereg_replace($sep."$","",$schema_insert) 行后加入如下命令行
$schema_insert=ereg_replace("\r\n","`return`",$schema_insert)
将换行符转换为不容易出现的换行标识串`return`(读者可根据自己数据的特点设置独特的换行标识串),再在data.php程序中加一行命令$data[$i]=ereg_replace("`return`","\r\n",$data[$i]),用来将换行标识串还原成换行符。
2、分隔符的处理
如果MySQL记录行恰好包含CSV分隔符,fgetcsv()进行分隔处理时就会出现问题。
笔者仍然是通过修改lib.inc.php3文件解决的。
在get_table_csv()的$schema_insert="$row[$j]".$sep行前加一行
$row[$j]=ereg_replace($sep,"`return_sep`",$row[$j]) 命令,将分隔符转为分隔标识串`return_sep`,同时在data.php中用命令行 $data[$i]=ereg_replace("`return_sep`",";",$data[$i]) 进行还原处理。
3、单引号的处理
MySQL的SQL语句行对单引号有特殊的定义,如果直接提交含单引号的SQL语句,就会出错。这种情况需要加上转义符。在data.php中加一行 $data[$i]=ereg_replace("'","\'",$data[$i]) 就可解决。
另外,在数据记录特别多的的情况下,dotmud.csv文件可能比较大,如果在服务器的限定时间内不能执行完data.php程序,就需要按行分拆dotmud.csv。如笔者有个7000行的dotmud.csv文件,在自己的机器上执行到600行就提示超时,便拆成10个文件上传到全路互联(www.wayall.com),结果对方的服务器速度快,每个文件的处理时间还不到1秒,而php默认的限定执行时间可是30秒啊!看来我做的分拆实属多余。
以上方法解决了数据库内容的上传问题。对于数据库结构的上传,只要稍微修改一下data.php程序就可实现。其实,如果库结构比较简单,用phpADMIN更方便
❷ DMZ区应用服务器怎么和mysql数据库传输数据
需要将数据库服务器的3306端口在路由上映射出去,当然映射出去的端口号不一定非得是3306,可以自定义端口号,而且为了安全可以做一条策略,只允许dmz区的ip地址访问。希望可以帮到你~
❸ mysql怎样将一个数据库中的数据导入到另一个数据库中
1、启动该工具,设置好数据链接。
❹ mysql数据库怎么上传数据的
链接数据库,插入数据,,不是上传的。。
❺ 如何在两台服务器之间安全迁移MySQL数据库
迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。
下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。
将MySQL数据库导出至转储文件(mp file)
Oracle提供了一个名为mysqlmp的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:
1.mysqlmp -u root -p --opt [database name] > [database name].sql
不过,请注意如下几点:
我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。
在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。
请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。
安全加固备份文件
在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。
因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux操作系统上,请使用以下的命令对已压缩文件进行加密:
1.zip --encrypt mp.zip db.sql
在压缩开始之前,系统将提示您输入密码。
传输备份文件
至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:
1.scp /path/to/source-file user@host:/path/to/destination-folder/
将MySQL转储导入新服务器
通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:
1.unzip -P your-password mp.zip
为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。
您可以使用以下的命令来导入文件:
1.mysql -u root -p newdatabase < /path/to/newdatabase.sql
在新服务器上验证导入的数据
现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。
我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。
该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。
1.SELECT
2.TABLE_NAME,
3.TABLE_ROWS
4.FROM
`
5.information_schema`.`tables`
6.WHERE
`
7.table_schema` = 'YOUR_DB_NAME';
此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。
此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。
另一种导出和导入的选项
我们之所以把该选项放在最后,是因为我们的确不建议您去使用它。
该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。
而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。
因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。
当然,如果您非要尝试一下的话,可以使用如下的命令:
1.mysqlmp -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword'
重要提示
请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(https://dev.mysql.com/doc/refman/5.7/en/upgrading.html)。
请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。
请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。
如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您最好不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。
在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。
在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了
❻ 如何将MySQL数据库拷贝到另一台机器
不行,但是你可以在另外一台上安装,然后吧数据部分搬过去是可以的,直接搬是不行的哦
❼ 怎样把我的Mysql中的数据库复制到另一台电脑中
MySQL 8.0.17 clone 插件的安装和验证过程
安装非常简单,与安装其他插件的工作方式相同。下面是安装克隆插件的命令行:
master [localhost:45008] ((none)) > INSTALL PLUGIN clone SONAME 'mysql_clone.so';Query OK, 0 rows affected (0.00 sec)
以及如何检查克隆插件是否处于活动状态:master [localhost:45008] ((none)) > SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINSWHERE PLUGIN_NAME LIKE 'clone';+-------------+---------------+| PLUGIN_NAME | PLUGIN_STATUS |+-------------+---------------+| clone | ACTIVE |+-------------+---------------+1 row in set (0.00 sec)
请注意,这些步骤需要在 Donor(供体)和 Recipient(受体,也成为 Slave)上都执行。执行安装后,插件将在重新启动后自动加载,因此您不必再担心这一点。接下来,我们将在 Donor 上创建具有必要权限的用户,这样我们就可以远程连接到实例来克隆它。
master [localhost:45008] ((none)) > create user clone_user@'%' identified by 'sekret';
Query OK, 0 rows affected (0.01 sec)
master [localhost:45008] ((none)) > GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
Query OK, 0 rows affected (0.00 sec)
作为安全措施,我建议将百分号 % 替换为从机的 IP、主机名或网络掩码,以便只有未来的从服务器才能接受连接。现在,从服务器上,克隆用户需要CLONE_ADMIN 权限来替换从机数据,在克隆操作期间阻止 DDL 并自动重新启动服务器。
slave1 [localhost:45009] ((none)) > create user clone_user@'localhost' identified by 'sekret';
Query OK, 0 rows affected (0.01 sec)
slave1 [localhost:45009] ((none)) > GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
如上所述,克隆过程可以在本地或远程执行。此外,它支持复制,这意味着克隆操作从捐赠者提取和传输复制坐标并将其应用于收件人。它可用于 GTID 或非 GTID 复制。因此,要开始克隆过程,首先,让我们确保有一个有效的供体(Master)。这由 clone_valid_donor_list 参数控制。由于它是动态参数,您可以在服务器运行时进行更改。使用 show variables 命令将显示参数是否具有有效的供体(Master):slave1 [localhost:45009] ((none)) > SHOW VARIABLES LIKE 'clone_valid_donor_list';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| clone_valid_donor_list | |+------------------------+-------+1 row in set (0.01 sec)
例子中,我们需要对它进行设置:slave1 [localhost:45009] ((none)) > set global clone_valid_donor_list = '127.0.0.1:45008';Query OK, 0 rows affected (0.00 sec)
下一步不是强制性的,但使用默认的 log_error_verbosity,错误日志不会显示有关克隆进度的大量信息。所以,对于这个例子,我会将详细程度调整到更高的级别(在供体和受体机上):mysql > set global log_error_verbosity=3;Query OK, 0 rows affected (0.00 sec)
现在,让我们在受体(Slave)上开始克隆过程:slave1 [localhost:45009] ((none)) > CLONE INSTANCE FROM [email protected]:45008 identified by 'sekret';Query OK, 0 rows affected (38.58 sec)
接下来,安装并验证插件,并在主和从服务器上创建用户。
克隆过程
❽ 如何利用Navicat for MySQL数据库进行数据传输
如何利用Navicat for MySQL数据库进行数据传输
navicat for mysql种数据库管理工具, 专门用于简化, 发管理MySQL我使用navicat for mysql连接远程数据库连接本数据库使用工具查看表数据非便输入SQL命令实现查询输入创建表等命令便我起看看使用navicat for mysql 创建并查询数据库数据
❾ mysql数据库怎么远程连接使用,怎么传数据
MySQL使用navcatMySQL客户端工具远程连接,这个工具有导入向导,支持TXT文本和EXCEL表格导入。