我有一个现有的数据库,以及来自类似db的sql转储文件。是否有一种在不覆盖本地凭据的情况下将其还原到此现有db的方法?
转储是通过以下方式创建的:
mysqldump --user=${user} --password=${password} my_database > "my_db_dump_${timestamp}.sql"此外,在还原到数据库之前,我应该清除它吗?
mysql --user=${user} --password=${password} < "my_db_dump_${timestamp}.sql"或者我可以在现有的db上执行上面的操作吗?
发布于 2021-08-30 07:58:08
mysqldump创建的转储通常不会包含任何更改用户凭据的内容。mysqldump只是“生成一组SQL语句,可以执行这些语句来复制原始的数据库对象定义和表数据。”(https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)只要您要备份的数据库不是内部的"mysql“数据库,就可以了。
您也不会使用mysqldump来恢复数据--再说一次,它只是生成一组SQL语句。因此,您可以使用mysql来执行生成的SQL文件。
至于在还原数据库之前是否应该“清除数据库”,这个问题更多地取决于数据库本身,但通常的答案是“是”。(清空表,也就是说,如果定义了表权限,则可能不希望实际销毁这些表,因为这当然是对现有本地凭据的更改。)因为mysqldump文件主要是一堆CREATE和INSERT语句,所以很可能INSERT只会创建已经存在的任何内容的重复值。
但是,如果有疑问,您可以始终打开生成的.SQL文件,查看语句的功能,这将指导您如何准备。这是一个纯文本文件,没什么特别之处。
https://stackoverflow.com/questions/68979998
复制相似问题