Ich versuche, eine CSV-Datei von einem Linux-Rechner auf einem lokalen PC über ein PHP-Skript in einem Browser zu exportieren.Problem mit psql Meta-Befehle in PHP für copy export csv
Ich habe ein gutes Stück Forschung gemacht, aber ich kann nicht finden, was ich suche (vielleicht existiert es nicht).
Mein Skript verbindet sich mit der Datenbank über PHP und verwendet localhost wie auch meine anderen PHP-Skripte, die nur Daten aus der Datenbank anzeigen, aber die Daten nicht exportieren.
Hier ist mein vergeblicher Versuch:
$user = 'postgres';
$password = 'XXXXX';
$db = 'ltg';
$host = 'localhost';
$conn=pg_connect('dbname ='.$db.' user = '.$user.' password = '.$password.' host = '.$host) or die ("Could not connect: ");
//query for copying/exporting to csv
echo "system(\copy (select lat, lon from ltg_data order by time desc limit 1000) To '~/Downloads/export.csv' CSV HEADER);"
Es gibt zwei Probleme, zumindest, dass ich verwirrt bin. Die Verbindung zur db funktioniert gut für den Zugriff auf/Anzeige von Daten aus db. Muss ich etwas anderes als "localhost" verwenden, um Daten zu exportieren?
Zweitens ist die Ausführung des Befehls \ copy problematisch. Ich muss irgendwie einen psql Meta-Befehl ausführen, um die Daten zu exportieren, und ich weiß wirklich nicht, wie man das über PHP macht.
Vielen Dank für Ihre Zeit.
Vielen Dank! Ich denke, ich komme irgendwo hin. Folgendes habe ich: system ("echo '\ copy (Wähle lat, lon, Zeit von ltg_data order by time desc limit 1000) Um' export.csv 'CSV HEADER' | psql"); Es sieht so aus, als ob es im Browser läuft, aber es speichert die Daten nirgends, die ich finden kann. Irgendwelche Vorschläge? Ich glaube nicht, dass ich noch weitere Fluchtparameter brauche. Vielen Dank! – user1610717
Ich würde es einen vollständigen Pfad geben anstatt nur 'export.csv', so dass Sie wissen, wo Sie suchen müssen! –
Ich gab es ... 'C:' \ export.csv '. Ich entkam dem "\". Denkst du, ich muss noch etwas entkommen? Die Datei nirgends finden. Gibt es eine Möglichkeit zu sagen, was es zu tun versucht, wenn es ausgeführt wird? Vielleicht ist das ein Nachteil des Systems. Ich habe den regulären COPY-Befehl ohne Glück versucht. Nochmals vielen Dank für jede Hilfe. – user1610717