Carregando dados no banco de dados MySQL usando cron

0

Eu gostaria de tornar o carregamento de dados no banco de dados MySQL (Ubuntu 12.04) um trabalho cron. Eu posso fazer isso manualmente usando o código:

LOAD LOCAL DATA 
INFILE re.txt
INTO table rasss
LINES TERMINATED BY '|'

Eu também sei como adicionar um trabalho ao arquivo crontab -e , mas eu fiz isso apenas para comandos de linha única

    
por sosytee 26.08.2013 / 11:39

1 resposta

6

a melhor solução seria fazer um script curto sobre isso, e chamar esse script de cron - você poderia fazer isso como uma linha única, mas seria feio e difícil de manter, e não há vantagem para ser tido. (deixe-me saber se você precisa de um exemplo)

edit:

tente algo ao longo destas linhas, fora do topo da minha cabeça:

#!/bin/bash

DB_USER='my_user';
DB_PASSWD='passwd';

DB_NAME='db_name';
TABLE='rass';

INPUT_FILE='/full/path/to/re.txt';

SQL="USE $DB_NAME; LOAD LOCAL DATA INFILE '$INPUT_FILE' REPLACE INTO TABLE '$TABLE' LINES TERMINATED BY '|' CHARACTER SET utf8;"
mysql --user=$DB_USER --password=$DB_PASSWD --default_character_set utf8 $DB_NAME -e "$SQL"

Quanto a onde colocá-lo, bem, isso é com você. Lembre-se de que, se você usar a raiz crontab , o script será executado com permissões de root e deverá ser de propriedade de root (e não ser gravável pelo mundo). Por esse motivo, às vezes tenho scripts desse tipo em /root .

Espero que isso ajude:)

    
por simon 26.08.2013 / 11:47