SQL - 如何通过单击一个按钮来备份数据库?

时间:2017-02-19 17:21:43

标签: php mysql sql

Hello stackoverflow用户

我有一个SQL数据库,我希望能够通过点击按钮来备份它(不要问为什么)所以我该怎么做

3 个答案:

答案 0 :(得分:0)

很简单。

只需创建一个新的PHP网页,说backup.php并创建一个表单(带有数据库名称字段)并在其上添加一个提交按钮。 单击后,您将重定向到另一个临时页面saving.php

在该页面中:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'password';

   $dbname = $_POST['database_name'];

   $backup = $dbname . date("Y-m-d-H-i-s") . '.gz';
   $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "test_db | gzip > $backup";

   system($command);
?>

备份数据库后,重定向回backup.php

每次点击该按钮,您的数据库都会备份到所需的位置

答案 1 :(得分:0)

如果您有Linux服务器,则以下代码会在每次运行一个月的31天中保存文件。对于Windows服务器,它可能需要一些mod。

创建一个指向此页面的表单:

    <?php


define('DB_HOST', 'localhost');
define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_username');
define('DB_PASSWORD', 'your_username_password');
define('BACKUP_SAVE_TO', 'backup_storage_path'); 

$time = time();
$day = date('j', $time);
if ($day == 1) {
    $date = date('Y-m-d', $time);
} else {
    $date = $day;
}

$backupFile = BACKUP_SAVE_TO . '/' . DB_NAME . '_' . $date . '.gz';
if (file_exists($backupFile)) {
    unlink($backupFile);
}
$command = 'mysqldump --opt -h ' . DB_HOST . ' -u ' . DB_USER . ' -p\'' . DB_PASSWORD . '\' ' . DB_NAME . ' | gzip > ' . $backupFile;
system($command);

?>

答案 2 :(得分:0)

我不确定您当前的代码或您使用的SQL模块。现在,我猜你正在使用内置的sqlite 3模块。在那种情况下,我仍然需要知道备份的含义。是保存用户在数据库中输入的信息,还是指将数据库中的数据复制到另一个数据库作为备份?这个问题不清楚,但是假设它是第二个问题 1.)首先导入Tkinter和sqlite 3

import Tkinter, sqlite3

2.)然后连接到存储数据库的文件,并创建一个光标

conn = sqlite3.connect("table.db")
c = conn.cursor()

3.)接下来创建Tkinter对象(在这种情况下为按钮)并为其回调创建一个def

master = Tk()

def callback():
   c.execute("SELECT * FROM table_name")
   Data = c.fetchall()
   c.execute('''CREATE TABLE IF NOT EXISTS table_backup
         (id INTEGER PRIMARY KEY, some_row, some_row2)''')

   row_1 = Data[0]
   row_2 = Data[1]
   c.execute("INSERT INTO table_backup(some_row, some_row2) VALUES(?, ?);",   (row_1, row_2))
   conn.commit()
b = Button(master, text="OK", command=callback())
b.pack()

mainloop()