10.3k Aufrufe
Gefragt in Datenbanken von
Hallo,
ich kriege es einfach nicht hin. Ich möchte aus einer Access-Datenbank eine Tabelle als eine CSV-Datei abspeichern. Es soll mithilfe einer SQL-Abfrage laufen. Mein Versuch:
SELECT * INTO OUTFILE 'C:\TEST.csv' FIELDS TERMINATED BY ',' FROM MeineTabelle;

führt zu Fehlermeldung.
Wäre schön, wenn jemand noch eine Lösung für mich hätte: umgekehrte Richtung (CSV zu Tabelle)
Danke im Voraus

8 Antworten

0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Hallo maxim,
Deine Export-Lösung ist aus PHP. Hier ist das anders geregelt:

Export der Tabelle1, wobei
[list]- der Feldtrenner Semikolon ist (;),
- eine Kopfzeile angelegt werden soll,
- der Pfad zur Datenbank E:\d\lösungen heißt und
- die Ausgabedatei "Disposition der Fahrzeuge1.csv":[/list]
SELECT * INTO [Text;FMT=Delimited(;);HDR=Yes;DATABASE=E:\d\lösungen;].[Disposition der Fahrzeuge1.csv]
FROM Tabelle1;


Import der Disposition der Fahrzeuge.csv, wobei
[list]- der Feldtrenner Doppelkreuz ist (#),
- keine Kopfzeile vorhanden ist,
- der Pfad zur Datenbank E:\d\lösungen heißt und
- die Tabelle Tab1[/list]
SELECT * INTO Tab1
FROM [Text;FMT=Delimited(#);HDR=No;DATABASE=E:\d\lösungen;].[Disposition der Fahrzeuge.csv];


Vorsicht bei Access2000: Der Abfrageeditor setzt beim Öffnen solcher gespeicherter Abfragen gerne die Klammern neu, so dass aus [Disposition der Fahrzeuge.csv] denn [Disposition der Fahrzeuge].csv wird, dass er denn beim Speichern als Syntaxfehler erkennt.

Gruß
lorf
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Ach ja, man kann das auch noch in ein Makro unterbringen (wie hier), so dass man das auf Knopfdruck laufen lassen kann. Aber man muss nicht.
0 Punkte
Beantwortet von marie Experte (2k Punkte)
In Access geht das Exportieren in Excel und das Importieren aus Excel am einfachsten mit dem Befehl

DoCmd.TransferDatabase

schau mal in der Hilfe, da müsstest Du klarkommen damit, wenn nicht fragste nochmal hier

Gruß marie
0 Punkte
Beantwortet von
Danke für Eure Antworten.
Ich möchte es schon mit einer SQL-Abfrage lösen. Ich arbeite mit Access 2007 und er ändert auch automatisch die Klammern:
aus
SELECT * INTO [Text;FMT=Delimited(;);HDR=Yes;DATABASE=C:\001.accdb;].[TEST.csv] FROM CSVTest;

macht er
SELECT * INTO (Text;FMT=Delimited(;);HDR=Yes;DATABASE=C:\001.accdb;) TEST.csv FROM CSVTest;

Schlimmer ist aber, dass beim Ausführen der Abfrage eine Fehlermeldung kommt: 'C:\001.accdb' ist kein zulässiger Pfad….
Ich habe auch ohne Endung (.accdb) getestet, gleicher Ergebnis.
Habe ich irgendwas vergessen?

Gruß
maxim66
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Wenn man mit Vista arbeitet, hat man auch als Administrator nicht mehr überall Schreibrechte und "C:\" gehört auch dazu. Lege doch mal ein Verzeichnis in C an, möglichst ohne Leerzeichen, so dass du da drin alle Rechte hast.

Gruß
lorf
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Oder deaktiviere die Benutzerkontensteuerung.

Gruß marie
0 Punkte
Beantwortet von maxim66 Einsteiger_in (19 Punkte)
Habe mir schon gedacht. Die Datenbank, an der ich arbeite, ist für meine Abteilung in der Firma. Und ich habe leider keine Rechte die Rechte zu vergeben.
Gibt es vielleicht eine andere Möglichkeit mit SQL CSV-Datei zu erstellen? Meine SQL-Kenntnisse sind leider noch sehr begrentzt.
Gruß
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Hallo maxim,
versuche doch mal dir mit SUBST in der DOS-Box ein neues Laufwerk für "Eigene Dateien" zu machen:
subst K: "C:\Dokumente und Einstellungen\MAXIM\Eigene Dateien"
(statt k musst du natürlich einen noch freien Buchstaben nehmen
und C ist dein Windows-Partitions-Buchstabe)
oder alternativ bzw. allgemeiner:
subst K: "%HOMEDRIVE%%HOMEPATH%"

und den Buchstaben trägst du denn hinter DATABASE ein, so dass sich
(Text;FMT=Delimited(;);HDR=Yes;DATABASE=K:\001.accdb;)
ergibt, wobei die 001.accdb denn in "Eigene Dateien" stehen muss.

Damit sollte es funktionieren.
Gruß
lorf
...