mysql exportieren csv datei

mysql exportieren csv datei

am 09.08.2006 18:53:01 von stefan brugger

Hallo NG,

ich habe eine Datenbank. Diese lasse ich durch eine Abfrage nach php
auslesen. Nun würde ich gerne das Ergebnis nicht in php anzeigen sondern als
acii file zum download anbieten. Könnt ihr mir bitte mitteilen wie das gehz
oder wo ich im Netz nachkesen kann. Ich bin mir nicht sicher ob ich die
Frage korrekt gestellt habe. Ich hoffe ihr versteht was ich meine...
Vielen Dank für eure Antworten

Gruß
Stefan

Re: mysql exportieren csv datei

am 09.08.2006 20:43:39 von Thomas Rachel

stefan brugger wrote:

> Hallo NG,
>
> ich habe eine Datenbank. Diese lasse ich durch eine Abfrage nach php
> auslesen. Nun würde ich gerne ...

Deine Umlaute sind falsch deklariert, bitte Deinen Newsclient richtig
konfigurieren.

> ... das Ergebnis nicht in php anzeigen sondern
> als acii file zum download anbieten.

Wie das genau geht mit dem Runterladen, müßtest Du in einer PHP-Gruppe
erfragen. Aber bei der Formatierung mußt Du einfach nur

* die einzelnen Feldinhalte so bearbeiten, wie es Dein csv-Format vorgibt
(sollen "" drumrum, wie sollen im Text vorhandene Newlines, "- oder ;-
bzw. ,-Zeichen behandelt werden)

* sie sodann mit dem gewählten Trenner (meist also , oder ;) trennen

* und als einzelne Zeilen ausgeben.

Als erste Zeile evtl. noch die Spaltennamen; diese werden dann genauso
bearbeitet.

Das alles sollte vorzugsweise dann in PHP geschehen; Probleme dabei bitte
ebenfalls in einer PHP-Gruppe erfragen.

Wie bekommst Du nun diese Werte? Nun, da gibt es zwei Möglichkeiten:

1) Du hast eine konkrete Spaltenliste. Dann solltest Du die im Query
angeben: SELECT ... FROM tabelle ...

2) Du willst alle Spalten. Das könnte in dem Fall schwierig werden, wo Du
a) die Spaltennamen brauchst oder
b) die Felder in einer bestimmten Reihenfolge stehen sollen.

Im Fall 2b) kommst Du wohl nicht drumrum, doch eine bestimmte Spaltenliste
vorzugeben; im Fall 2a) kannst Du die mit "SELECT * FROM ..." abgefragten
Felder mit einer API-Funktion zusammen mit dem Ergebnis abfragen. Wie, das
verrät Dir das PHP-Handbuch. Ich könnte Dir diese Frage zwar
MySQL-spezifisch beantworten, aber PHP definiert manche Funktionen der
MySQL-API um, so daß Du doch besser das dortige Handbuch konsultierst.


Thomas
--
Lebe jeden Tag so, als wäre es Dein letzter!
Irgendwann wird es die Wahrheit sein.

Re: mysql exportieren csv datei

am 09.08.2006 22:07:22 von stefan brugger

"Thomas Rachel" schrieb

> Deine Umlaute sind falsch deklariert, bitte Deinen Newsclient richtig
> konfigurieren.
das ist mir neu, das hat noch niemand geschrieben......



>> ... das Ergebnis nicht in php anzeigen sondern
>> als acii file zum download anbieten.
soweit ich jetzt gegoogelt habe ist das mit nachstehenden Befehl zu
bewerkstelligen
SELECT ...
INTO OUTFILE '/home/www/servers/www.servername.de/tmp/export.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
FROM ...;

> Thomas
Stefan


> Lebe jeden Tag so, als wäre es Dein letzter!
> Irgendwann wird es die Wahrheit sein.
und je älter man wird desto näher kommt der Tag der warheit

Re: mysql exportieren csv datei

am 09.08.2006 23:03:27 von Thomas Rachel

stefan brugger wrote:

> "Thomas Rachel" schrieb
>
>> Deine Umlaute sind falsch deklariert, bitte Deinen Newsclient richtig
>> konfigurieren.
> das ist mir neu, das hat noch niemand geschrieben......

Ist aber so - erkennbar an den in Deinen postings vorhandenen Umlauten,
die mein Newsreader nicht erkennt, weil er nicht weiß, in welchem
Zeichensatz sie geschrieben wurden. Es fehlen die Zeilen

| Mime-Version: 1.0
| Content-Type: text/plain; charset=iso-8859-1
| Content-Transfer-Encoding: 8Bit

in Deinem Header. Es gibt eine spezielle Gruppe über den Outlook Express;
würde mich nicht wundern, wenn die Lösung nicht dort in der FAQ stünde.


> SELECT ...
> INTO OUTFILE '/home/www/servers/www.servername.de/tmp/export.csv'
> FIELDS
> TERMINATED BY ';'
> OPTIONALLY ENCLOSED BY '"'
> FROM ...;

Das ginge auch - wäre sogar eleganter - aber dann mußt Du diese erstellte
Datei php-seitig nochmal einlesen. Aber davon abgesehen hast Du recht.


Thomas
--
Windows? Ich sage nur: »ILOVEYOU«

Re: mysql exportieren csv datei

am 10.08.2006 03:27:36 von Carsten Wiedmann

stefan brugger schrieb:

> ich habe eine Datenbank. Diese lasse ich durch eine Abfrage nach php
> auslesen.

Irgendwie bist du in der falschen Gruppe ;-) Aber das wurde ja schon gesagt.


> Nun würde ich gerne das Ergebnis nicht in php anzeigen sondern
> als acii file zum download anbieten.

Aus Sicht von PHP ist das eigentlich fast das Selbe. Durch z.B. echo() gibst
du deine Daten ganz normal aus. Du musst nur mit der Funktion header() den
Content-Type anpassen, damit der Browser weis, dass jetzt kein HTML kommt
und das ganze ein Download sein soll.


> Könnt ihr mir bitte mitteilen wie
> das gehz oder wo ich im Netz nachkesen kann. Ich bin mir nicht sicher
> ob ich die Frage korrekt gestellt habe. Ich hoffe ihr versteht was ich
> meine...

Das "SELECT ... INTO OUTFILE" hast du ja schon gefunden. Ist aber in einer
Webserverumgebung, die du evtl. auch nicht immer ganz unter deiner Kontrolle
hast, nicht ganz unproblematisch.

Ich würde mir mal die UCN's zu fputcsv() durchlesen, im Zusammenspiel mit
dem gewohnten "SELECT" im Query und msql_fetch_row().

Da wir jetzt ja wirklich bei PHP sind:
xpost+fup2 d.c.l.p.d

Gruß
Carsten

Re: mysql exportieren csv datei

am 10.08.2006 03:27:36 von Carsten Wiedmann

stefan brugger schrieb:

> ich habe eine Datenbank. Diese lasse ich durch eine Abfrage nach php
> auslesen.

Irgendwie bist du in der falschen Gruppe ;-) Aber das wurde ja schon gesagt.


> Nun würde ich gerne das Ergebnis nicht in php anzeigen sondern
> als acii file zum download anbieten.

Aus Sicht von PHP ist das eigentlich fast das Selbe. Durch z.B. echo() gibst
du deine Daten ganz normal aus. Du musst nur mit der Funktion header() den
Content-Type anpassen, damit der Browser weis, dass jetzt kein HTML kommt
und das ganze ein Download sein soll.


> Könnt ihr mir bitte mitteilen wie
> das gehz oder wo ich im Netz nachkesen kann. Ich bin mir nicht sicher
> ob ich die Frage korrekt gestellt habe. Ich hoffe ihr versteht was ich
> meine...

Das "SELECT ... INTO OUTFILE" hast du ja schon gefunden. Ist aber in einer
Webserverumgebung, die du evtl. auch nicht immer ganz unter deiner Kontrolle
hast, nicht ganz unproblematisch.

Ich würde mir mal die UCN's zu fputcsv() durchlesen, im Zusammenspiel mit
dem gewohnten "SELECT" im Query und msql_fetch_row().

Da wir jetzt ja wirklich bei PHP sind:
xpost+fup2 d.c.l.p.d

Gruß
Carsten