# phpmyadmin sql-abfrage und export automatisieren



## Tibi25 (13. Juni 2007)

Ich habe eine Datenbank, die ich z.Zt. jede Nacht komplett mit mysqldumper einwandfrei wegsichern und per eMail zusenden kann. Nun möchte ich aber, dass nach der Sicherung der DB aus mehreren Tabellen mir eine per Mail zugeschickt wird (durch SQL-Befehl). Manuell klappt ja auch alles, nur müsste es automatisch gehen.

Hier meine SQL-Abfrage (ein wenig gekürtzt):

```
SELECT 
	kunde.id as KundenID, 
	erfassung.aktion as Kampagne, 
	erfassung.aktion2 as Kundenbeziehung,
	kunde.Vorwahl,
	kunde.Rufnummer,
	kunde.KundenNr,
	kunde.GebDatum,
	kunde.Anrede,
	kunde.Nachname,
	kunde.Vorname,
	kunde.Firma,
	kunde.Strasse,
	kunde.Nummer,
	kunde.PLZ,
	kunde.Ort,
	erfassung.aktuell_produkte_id as Produkt,
	kunde.Kontoinhaber,
	kunde.BLZ,
	kunde.KontoNr,
	kunde.Bank,
	users.name, 
	users.vorname,
	erfassung.created,
	erfassung.AusgabeID

FROM `test_erfassung` as erfassung
```

Die Abfrage kann ich über phpmyadmin ohne Probleme ausführen und erhalte auch ein Ergebnis, dann kann ich auch ohne Probleme ein Export als Excel 2000 mit "Feldnamen in die erste Zeile" durchführen, nur wie kann ich die Abfrage automatisieren?

Kann auf dem Server auch Cron-Jobs erstellen, weiß aber leider nicht, wie ich´s d. oberer Teil automatisieren kann 

Oder kann ich mit einem SQL-Befehl eine *.sql Datei aufrufen lassen? Denn vor und nach der DB-Sicherung kann ich bei mysqldumper einzeilige SQL-Befehle ausführen lassen.


----------



## Tibi25 (18. Juni 2007)

Hat niemand eine Idee, wie ich SQL-Befehle (aus Tabelle auslesen und Ergebnis als XLS oder CSV Datei zusenden) zeitgesteuert ausführen kann?


----------



## Tibi25 (19. Juni 2007)

Bisher habe ich rausgefunden, dass ich per mysql Befehl *.sql Dateien per cronjob ausführen kann.

Hier ein Beispiel (Einwahl per Putty auf Server):

mysql -u DBUSER -pDBPASSWORD DATENBANKNAME

dann bin ich mit dem MySQL Monitor verbunden und bei der Eingabe von help erhalte ich folgende infos:


```
mysql> help

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Network Support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear command.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'
```

Wenn ich nun folgendes eingebe, erhalte ich auch eine Rückmeldung bzw. wird d. Script ausgeführt:
source /pages/10/1a/datenbank/home/htdocs/domain/abfrage.sql

Sobald ich in d. Abfrage (abfrage.sql) eine Zeile für den Output hinzufüge, damit die Daten exportiert werden, kriege ich immer eine Fehlermeldung:


```
SELECT 
	kunde.id as KundenID, 
	erfassung.aktion as Kampagne, 
	erfassung.aktion2 as Kundenbeziehung,
	kunde.Vorwahl,
	kunde.Rufnummer,
	kunde.KundenNr,
	kunde.GebDatum,
	kunde.Anrede,
	kunde.Nachname,
	kunde.Vorname,
	kunde.Firma,
	kunde.Strasse,
	kunde.Nummer,
	kunde.PLZ,
	kunde.Ort,
	erfassung.aktuell_produkte_id as Produkt,
	kunde.Kontoinhaber,
	kunde.BLZ,
	kunde.KontoNr,
	kunde.Bank,
	users.name, 
	users.vorname,
	erfassung.created,
	erfassung.AusgabeID
into outfile '/pages/10/1a/datenbank/home/htdocs/domain/backup/export.csv' fields terminated by ',' optionally enclosed by '''' LINES terminated by '\n'
FROM `test_erfassung` as erfassung;
```

Fehlermeldung (von phpmyadmin):
#1045 - Access denied for user 'dbo00025239'@'%' (using password: YES) 


Hat jmd. eine Idee, wo der Fehler liegt?

Rechte auf d. Verzeichnis müsste ich aber haben ,da ich ja ohne Probleme Dateien erstellen und löschen kann (mit FTP-Client und Rechte sind auf 0777 gesetzt).


----------

