【问题标题】:Drop table and copy one table look alike in MYSQL weeklyMYSQL 每周删除表和复制一张表看起来很像
【发布时间】:2017-05-03 16:21:42
【问题描述】:

我有一个问题,我需要使用以下方法从 MYSQL 复制表:

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable;

我需要每周删除该表并重新创建它们,因为我不想丢失原始数据。 谁能帮我找到一个可以自动完成的解决方案。我真的不知道

【问题讨论】:

    标签: mysql auto-generate


    【解决方案1】:

    如果您有一个 java 程序,其中您有 MySQL 查询并让查询通过 cron job 定期自动执行。

    您可以在其中运行两个单独的线程,或者您可以在它自己的同一个线程中执行它。即,将INSERT 执行到新表中,然后也许您可以简单地删除旧表。

    或者你可以选择MySQL Event Scheduler。这个SO 几乎解释了根据您的要求进行此操作的有效方法。

    【讨论】:

      【解决方案2】:

      您可以将MySQL EVENT Scheduler 用于此目的,如下所示。您也可以考虑改用CREATE TABLE AS(CTAS) 构造

      delimiter |
      CREATE EVENT myevent
          ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 WEEK
          DO
      BEGIN
            DROP TABLE IF EXISTS newtable;
            CREATE TABLE newtable AS  
               SELECT * FROM oldtable;
      END |
      delimiter ;
      

      【讨论】:

      • 这个方法不错,谢谢!会试试的。但是我能知道在哪里创建这个事件吗?是在 localhost 的 sql 里面吗?
      • @NorNazirah,这是一条 SQL 语句,因此创建它的方法与创建任何其他数据库对象(如存储过程或函数)一样。
      • 我试图在 sql 中运行它,但它说 SCHEDULE 是无法识别的语句。为什么?
      • @NorNazirah,有关在 MySQL 中创建事件的完整语法,请参阅答案中的编辑。有关更多信息,请参阅链接的 MySQL 文档页面。另外,您运行的是哪个 MySQL 版本?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多