복붙노트

[SQL] MySQL의 INTO OUTFILE는 덮어 쓰기 파일을 기존의?

SQL

MySQL의 INTO OUTFILE는 덮어 쓰기 파일을 기존의?

나는 CSV 파일을 생성하는 큰 SQL 스크립트를 작성했습니다. 나는 새로운 CSV 파일을 생성하고 웹 사이트에 사용할 가지고 매일 밤 cronjob에 전화를합니다.

나는 '/home/sites/example.com/www/files/backup.csv'내 파일을 저장할 수있어, 예를 들어 말

내 SQL입니다

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

파일이 이미 존재하는 경우 MySQL은 나에게 오류를 제공

MySQL이 파일을 덮어 쓸 수 있도록하는 방법이 있나요?

나는 PHP 파일이 존재하는 경우 감지하고 다시 만들기 전에 삭제 할 수 있지만 내가 MySQL의에서 직접 할 수 있다면 그것은 더 간결하다.

해결법

  1. ==============================

    1.아니, 그것을 덮어 쓸 수있는 방법은 없습니다. 워드 프로세서 :

    아니, 그것을 덮어 쓸 수있는 방법은 없습니다. 워드 프로세서 :

    당신이 하루 이상 존재 한 문제를 복구 할 수있는 여러 백업 수단을 가진 것으로, 매일 밤 다른 파일 이름을 사용하는 것이 더 좋은 생각이 될 수 있습니다. 그러면 항상 최신 전체 CSV를 가리키는 심볼릭 링크를 유지 할 수있다.

  2. ==============================

    2.왜 RM -f /home/sites/example.com/www/files/backup.csv 크론에 의해 스크립트 달렸다에서?

    왜 RM -f /home/sites/example.com/www/files/backup.csv 크론에 의해 스크립트 달렸다에서?

    당신은 내부 MySQL의에서이 프로그램을 실행할 수 있습니다. 그냥 \와 쉘 탈출! 예를 들면 :

    MySQL의> \! RM -f /home/sites/example.com/www/files/backup.csv

  3. ==============================

    3.이 같은 작업을 위해 나는 파일을 삭제, 떠들썩한 파일에 배치 할

    이 같은 작업을 위해 나는 파일을 삭제, 떠들썩한 파일에 배치 할

    #!/bin/bash
    rm /path/to/backup.csv
    ./backup_sql_query.sh  <<-- This contains the script to backup to CSV.
    

    더 나은 옵션은 실제로 비록 타임 스탬프를 추가하는 것입니다. 디스크 공간이 시대에 비용이.

  4. ==============================

    4.방법이 없다.

    방법이 없다.

    하나의 동적 문을 절차 수 가능.

    CREATE PROCEDURE export_dynamic(IN file_name char(64)) 
    BEGIN 
    set @myvar = concat('SELECT * INTO OUTFILE ',"'",file_name,"'",' FROM Table1') ; 
    PREPARE stmt1 FROM @myvar; 
    EXECUTE stmt1; 
    Deallocate prepare stmt1; 
    END; 
    
  5. ==============================

    5.3 단계는이 권리를해야 할 일. 백업은 당신이자는 동안 매일 밤을 실행 (여부)됩니다

    3 단계는이 권리를해야 할 일. 백업은 당신이자는 동안 매일 밤을 실행 (여부)됩니다

    1 단계 : 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 ( ....
    

    2 단계 : 이전 파일을 삭제하고 저장 프로 시저를 호출하는 스크립트 "/home/backupCSV.sh"를 만들기

    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 "
    

    3 단계 : 업데이트 crontab 명령 스크립트를 매일 실행

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

    4 단계 (옵션) : 감사 나)

  6. ==============================

    6.간단하게 mysql을 내에서 쉘 탈출하고 당신이 그것을 쓰기를 시도하기 전에 파일을 제거하는 rm 명령을 실행합니다. 예를 들면 :

    간단하게 mysql을 내에서 쉘 탈출하고 당신이 그것을 쓰기를 시도하기 전에 파일을 제거하는 rm 명령을 실행합니다. 예를 들면 :

    Mysql> \\! rm -f /home/sites/example.com/www/files/backup.csv
    
  7. ==============================

    7.오래된 질문 ...하지만 당신은 문에 추가 할 수있는 옵션 덮어 쓰기 ON이있다

    오래된 질문 ...하지만 당신은 문에 추가 할 수있는 옵션 덮어 쓰기 ON이있다

    SELECT * INTO OUTFILE '/home/sites/example.com/www/files/backup.csv'
      FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY '\n' OVERWRITE ON
    ...
    
  8. from https://stackoverflow.com/questions/960627/mysql-into-outfile-override-existing-file by cc-by-sa and MIT license