MySQL表名带日期的自动建表

原创
小哥 2年前 (2023-05-24) 阅读数 38 #大杂烩

有时我们需要根据日期批量创建表。这里有两种方法可以实现这一点

方法 1:使用存储过程并在稍作修改后粘贴它们sql直接在查询中执行

DROP PROCEDURE IF EXISTS create_tables;
DELIMITER $

CREATE PROCEDURE create_tables (IN bg DATE, IN ed DATE)
BEGIN

SET @cur= bg;

WHILE @cur <= ed DO   

SET @createSql = CONCAT(
"CREATE TABLE IF NOT EXISTS log_", DATE_FORMAT(@cur, %Y%m%d),
    "(
          id int(10) unsigned NOT NULL AUTO_INCREMENT,
          content VARCHAR(1024) NULL DEFAULT ,
          update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
          PRIMARY KEY (id)
        ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
   ");

PREPARE stmt FROM @createSql;
EXECUTE stmt;
SET @cur= DATE_ADD(@cur, INTERVAL 1 DAY);
END WHILE;

END $
DELIMITER ;  
CALL create_tables(2022-01-01, 2022-01-02);
DROP PROCEDURE IF EXISTS create_tables;

方法 2:使用script从脚本批量生成建表语句并将其另存为sql脚本重新执行

将以下脚本另存为.htm页面文件,双击以将其作为脚本生成工具启动


-

附加数据导入方法

mysql> LOAD DATA LOCAL INFILE dump.txt INTO TABLE mytbl

-> FIELDS TERMINATED BY :

-> LINES TERMINATED BY \r\n;

LOAD DATA 默认情况下,数据按数据文件中列的顺序插入。如果数据文件中的列与插入表中的列不匹配,则需要指定列的顺序。例如,数据文件中的列顺序为 a,b,c但是插入到表中的列的顺序是b,c,a数据导入语法如下:

mysql> LOAD DATA LOCAL INFILE dump.txt

-> INTO TABLE mytbl (b, c, a);

详情请参考 https://www.runoob.com/mysql/mysql-database-import.html

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门