MySQL INTO OUTFILE override existing file?

后端 未结 7 1634
抹茶落季
抹茶落季 2020-12-05 06:19

I\'ve written a big sql script that creates a CSV file. I want to call a cronjob every night to create a fresh CSV file and have it available on the website.

Say for

7条回答
  •  感动是毒
    2020-12-05 06:55

    3 steps to do this right. Your backup will be executed every night while you sleep (or not)

    STEP 1 : Create a stored procedure for your SQL

    CREATE PROCEDURE backupCSV()
    SELECT * INTO OUTFILE '/home/sites/example.com/www/files/backup.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM ( ....
    

    STEP 2 : Create a script "/home/backupCSV.sh" to delete old file and call the stored procedure

    echo "$(date +"%Y-%m-%d %T") START MAINTENANCE SCRIPT "
    rm /home/sites/example.com/www/files/backup.csv
    echo "$(date +"%Y-%m-%d %T")    SUCCESS >> Old file deleted"
    mysql --user=[user] --password=[password] [dataBaseName] --execute="CALL backupCSV();"
    echo "$(date +"%Y-%m-%d %T")    SUCCESS >> New file created"
    echo "$(date +"%Y-%m-%d %T") END MAINTENANCE SCRIPT "
    

    STEP 3 : Update Crontab to execute the script everyday

    # m h dom mon dow user  command
    
     0   3  * * *   root    sh -x /home/backupCSV.sh
    

    STEP 4 (optionnal) : thanks me ;)

提交回复
热议问题