Hello stackoverflow用户
我有一个SQL数据库,我希望能够通过点击按钮来备份它(不要问为什么)所以我该怎么做
答案 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()