【问题标题】:Automate backup and deletion of Microsoft sql database using python使用python自动备份和删除Microsoft sql数据库
【发布时间】:2022-01-03 06:27:41
【问题描述】:

所以我需要做的是备份我的 Microsoft Sql 数据库并从数据库中删除 6 个月前的数据。这两个过程都必须自动化。现在我被困在备份上。我一直在研究不同的东西并尝试应用它们,但我发现的大部分帮助都是关于数据库系统而不是 microsoft sql。

例如我找到了以下代码

for db_name in db_names:
try:
    file_path = ''
    dumper = " -U %s --password -Z 9 -f %s -F c %s  "
   os.putenv('PGPASSWORD', db_password)
    bkp_file = '%s_%s.sql' % (db_name, time.strftime('%Y%m%d_%H_%M_%S'))
    glob_list = glob.glob(dump_dir + db_name + '*' + '.pgdump')
    file_path = os.path.join(dump_dir, bkp_file)
    command = 'pg_dump' + dumper % (db_username, file_path, db_name)
    subprocess.call(command, shell=True)
    subprocess.call('gzip ' + file_path, shell=True)
except:
    print("Couldn't backup database" % (db_name))

上面的代码给了我以下错误

'sqldumper' is not recognized as an internal or external command,
 operable program or batch file.
'gzip' is not recognized as an internal or external command,
 operable program or batch file.

我认为这是因为这种方法适用于 postgres sql 数据。

非常感谢任何指南或教程或任何其他类型的帮助。

【问题讨论】:

  • gzipsqldumper 默认情况下在 Windows 上不可用。看起来您为类似 UNIX 的机器回收了一些代码。
  • 你知道有什么办法解决这个问题吗? @克劳斯D。
  • 该代码适用于 Postgres,而不是 SQL Server,所以不知道为什么它会起作用。为什么不直接使用 SQL Server 代理来设置自动备份作业?您可以直接从 SSMS 执行此操作
  • 我知道它适用于 Postgres,因为我在问题中也提到了这一点,我认为像 pg_dump 可能有一种用于 mssql 转储的方法。而且我没有考虑 SQL 代理方法。你能指导一下吗?

标签: python sql-server


【解决方案1】:

对于 MS SQL,您可以针对此命令调整您的代码:

sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

更多信息可以在这里找到:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15

【讨论】:

    【解决方案2】:

    我想知道,您是如何运行 python 脚本的。 您遇到的那些错误,可能来自 Windows 命令提示符。 确保在上面的 python 代码中导入 gzip 模块。 这是 MySQL 的一个示例: [MySQL数据库备份的Python脚本][1] [1]:https://tecadmin.net/python-script-for-mysql-database-backup/

    稍后,如果您使用的是 Linux,为了使脚本自动化,您可以随时使用 cron 作业来运行它。 对于 Windows,您可以使用 Windows 任务计划程序。

    【讨论】:

    • 嗨。我正在使用 Windows 10 在 VS 代码上运行此脚本。我的代码中也导入了 gzip。
    • 您可以使用普通的 Windows 命令提示符代替 VS-code 尝试相同的操作。首先尝试在 windows cmd 上运行 python。然后一旦 python 提示打开尝试导入这些模块。例如: import gzip 还导入您用于代码的转储程序。如果它们成功导入,则在退出后尝试在寡妇 cmd 中运行您的 python 脚本。例如:python3 backup.py
    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2020-01-29
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多