gpt4 book ai didi

mysql - 使用 Bash 脚本进行数据库归档

转载 作者:行者123 更新时间:2023-11-29 22:59:20 25 4
gpt4 key购买 nike

我有一个名为 vitalstatistix 的 MySQL 5.5 事务数据库,我希望每月存档。该数据库由一个名为 asterisk_event 的巨大表和较小的查找表组成。

asterisk_event 表有一列名为日期时间

1.我想提取该列的year_month部分:

SELECT DISTINCT EXTRACT(YEAR_MONTH FROM datetime) AS DATEPART  
FROM asterisk_event
WHERE `datetime` <= NOW() - INTERVAL 6 MONTH


+----------+
| DATEPART |
+----------+
| 201307 |
| 201308 |
| 201309 |
| 201310 |
| 201311 |
| 201312 |
| 201401 |
| 201402 |
| 201403 |
| 201404 |
| 201405 |
| 201406 |
| 201407 |
| 201408 |
+----------+
20 rows in set (1.31 sec)
  • 并且,对于上面返回的每个 DATEPART,创建一个名为 vitalstatistix_'datepart' 的数据库,例如,vitalstatistix_201307
  • 每个创建的存档数据库都将包含一个月的数据。

    我需要创建一个 bash 脚本和/或 SQL (MySQL) 存储过程或语句来补充它。

    这就是我现在所拥有的:

    #!/bin/bash
    MUSER="root"
    MPASS="password"
    MHOST="localhost"
    MYSQL="$(which mysql)"
    MYSQLDUMP="$(which mysqldump)"


    DB="vitalstatistix"
    for db in ${DB}
    do

    # Step 2: Identify the months that need archiving
    echo "$MYSQL -u$MUSER $db -Bse 'SELECTING .... FROM asterisk_event'"
    DATEPARTS="$($MYSQL -u$MUSER -p$MPASS $db -Bse 'SELECT DISTINCT EXTRACT(YEAR_MONTH FROM datetime) AS DATEPART FROM asterisk_event WHERE `datetime` <= NOW() - INTERVAL 6 MONTH')"
    echo "[START ARCHIVING]"
    echo "Database: "$db
    echo ${DATEPARTS}


    # Step 3: Create archive databases

    for DATEPART in ${DATEPARTS}
    do
    echo $DATEPART
    #ENTER LINES OF CODE HERE
    done
    echo "[END ARCHIVING]"
    done

    最佳答案

    类似的事情...

    MYSQL="mysql -uuser -ppassword database -BNe"

    $MYSQL "SELECT DISTINCT EXTRACT(YEAR_MONTH FROM datetime) AS DATEPART
    FROM asterisk_event WHERE `datetime` <= NOW() - INTERVAL 6 MONTH"
    | while read date; do
    $MYSQL "CREATE TABLE vitalstatistix_$date SELECT * FROM asterisk_event
    WHERE datetime LIKE '$date%'"
    done

    一个更简单的事情是使用 mysql trigger插入时,要将数据插入到第二个表中,并在每个月初将此表重命名为 vitalstatistix_<date>并开始一个新的。

    关于mysql - 使用 Bash 脚本进行数据库归档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577615/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com