2017-09-20 1 views
0

J'essaie de créer un Event dans mysql, dans l'événement Je veux exécuter la requête LOAD DATA toutes les 30 minutes.
Ma Recherche:Erreur: charger les données non autorisées dans les procédures stockées

DELIMITER $$ 
CREATE 
EVENT auto_mytable 
ON SCHEDULE EVERY 30 MINUTE 
DO BEGIN 

TRUNCATE TABLE mytable; 

LOAD DATA local INFILE '/file.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES; 

END; 
$$ 

J'obtiens l'erreur LOAD DATA not allowed in stored procedures est-il une autre solution pour obtenir la même chose? Merci

+1

Oui, utilisez un cronjob. – fancyPants

Répondre

0

Vous pouvez rechercher en utilisant mysqlimport via cron ou le planificateur de tâches de Windows.

cron est un démon Unix (service système) fourni avec toutes les principales distributions Linux/* BSD du serveur. Sur Windows, vous obtenez le Windows Task Scheduler service.

(Si vous voulez des suggestions sur la façon de configurer cron, laissez-moi savoir dans les commentaires ci-dessous.)

En supposant que vous êtes sur * nix, j'Enveloppez votre processus d'importation dans un script shell. Faites tout votre possible pour vérifier que les données que vous souhaitez importer sont disponibles (lisibles, etc.) et renvoyez des erreurs significatives (par exemple, stderr vs stdout, et des codes de sortie différents de zéro, selon le cas).

Documentation sur le mysqlimportis available online.