Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi AccessDB in csv-Datein umwandeln (https://www.delphipraxis.net/183803-accessdb-csv-datein-umwandeln.html)

BadenPower 6. Feb 2015 16:23

AW: AccessDB in csv-Datein umwandeln
 
Hast Du auch schon die von Jumpy in #27 verlinkte Lösung mit der Schema.ini getestet?

pelzig 6. Feb 2015 16:48

AW: AccessDB in csv-Datein umwandeln
 
Geht's immer noch um die Fehlermeldung von #21?

K.A. ob's hilft, aber nimm doch das Pipingsymbol als Trennzeichen und lass den Umlaut im Dateinamen weg. Hast Du im Hauptordner von C:\ Schreibrechte?

Vorschlag (kein Access und von SQL nul Ahnung):

Code:
SELECT * INTO [Text;FMT=Delimited('|');HDR=Yes;DATABASE=C:\Test\DBLoesungen;].csvCategories.csv] FROM Categories;
MfG

blema 6. Feb 2015 18:22

AW: AccessDB in csv-Datein umwandeln
 
Zitat:

Zitat von BadenPower (Beitrag 1289047)
Hast Du auch schon die von Jumpy in #27 verlinkte Lösung mit der Schema.ini getestet?

ja, habe ich... ohne Erfolg

blema 6. Feb 2015 18:25

AW: AccessDB in csv-Datein umwandeln
 
Zitat:

Zitat von pelzig (Beitrag 1289048)
Geht's immer noch um die Fehlermeldung von #21?

K.A. ob's hilft, aber nimm doch das Pipingsymbol als Trennzeichen und lass den Umlaut im Dateinamen weg. Hast Du im Hauptordner von C:\ Schreibrechte?

Vorschlag (kein Access und von SQL nul Ahnung):


ja, es geht immer noch um die Fehlermeldung von#21
Mit dem Pipe-Zeichen habe ich auch versucht, no solution ...

Code:
SELECT * INTO [Text;FMT=Delimited('|');HDR=Yes;DATABASE=C:\DBLoesungen;].csvCategories.csv] FROM Categories;
Zitat:

Zitat von pelzig (Beitrag 1289048)
Hast Du im Hauptordner von C:\ Schreibrechte?

Ja habe ich. Das ist mein privater Rechner

Sir Rufo 6. Feb 2015 18:48

AW: AccessDB in csv-Datein umwandeln
 
Hauahauaha ... hier sind ja einige Anfänger unterwegens :mrgreen:
(Nein, nicht schlagen ... ich bin ja schon lieb :stupid:)

So dann lösen wir mal das Rätsel:

Dieses ominöse
Code:
FMT=...
wird beim Export nicht ausgewertet. Da kann man auch hinschreiben
Code:
FMT=Oma ihr klein Häuschen;
und man bekommt das gleiche Resultat.

Hintergrund:

In der Registry
Code:
HKLM/SOFTWARE/Microsoft/Jet/4.0/Engines/Text
gibt es einen Eintrag Format und der steht default auf CSVDelimited, was gleichbedeutend mit dem
Delphi-Quellcode:
,
ist. Und genau das beisst sich mit der (in Deutschland gültigen) Regions-Einstellung für das Dezimaltrennzeichen
Delphi-Quellcode:
,
.

Man kann jetzt die Registry ändern (doof), die Regionseinstellungen ändern (noch doofer :stupid:) oder man schreibt in das Export-Verzeichnis eine schema.ini (wurde hier auch schon genannt).

Hier wird also für jede Exportdatei eine Sektion angelegt die folgende Einträge zwingend enthalten muss (beispielhaft für die Categories.csv)
Code:
[Categories.csv]
Format=Delimited(;)
oder, wenn es eine Komma-getrennte Datei werden soll
Code:
[Categories.csv]
Format=CSVDelimited
DecimalSymbol=.
CurrencyDecimalSymbol=.
Alle weiteren Möglichkeiten der Konfiguration finden sich im oben angegebenen Link.

Das dazu passende Export-Statement lautet also
SQL-Code:
SELECT * 
INTO [Text;HDR=Yes;DATABASE=C:\DBLoesungen;].[Categories.csv]
FROM Categories;
So dann noch ein fröhliches Exportieren :)

pelzig 6. Feb 2015 19:08

AW: AccessDB in csv-Datein umwandeln
 
Zitat:

Zitat von blema (Beitrag 1289062)
Zitat:

Zitat von pelzig (Beitrag 1289048)
Geht's immer noch um die Fehlermeldung von #21?

K.A. ob's hilft, aber nimm doch das Pipingsymbol als Trennzeichen und lass den Umlaut im Dateinamen weg. Hast Du im Hauptordner von C:\ Schreibrechte?

Vorschlag (kein Access und von SQL nul Ahnung):


ja, es geht immer noch um die Fehlermeldung von#21
Mit dem Pipe-Zeichen habe ich auch versucht, no solution ...

Code:
SELECT * INTO [Text;FMT=Delimited('|');HDR=Yes;DATABASE=C:\DBLoesungen;].csvCategories.csv] FROM Categories;
Zitat:

Zitat von pelzig (Beitrag 1289048)
Hast Du im Hauptordner von C:\ Schreibrechte?

Ja habe ich. Das ist mein privater Rechner

Mein Rechner ist auch mein "privater" Rechner, aber wenn ich nach "C:\" schreiben will, brauche ich Admin-Rechte.

Öffne doch mal auf Deiner Kiste den Ordner "C:\DBLoesungen" oder "C:\DBLösungen" oder wohinauchimmer Du zu exportieren glaubst.

Gibt's die Ordner überhaupt, und falls JA: Was ist da denn drin?
*.csv-Dateien kannst Du mit notepad öffnen.

Als jemand, der von SQL null Ahnung (und auch kein Access) hat:
- Wo wird im SQL-Befehl die Datenquelle eingetragen?
- Wo wird im SQL-Befehl das Exportziel (dessen Dateiname) eingetragen?

Irgendwie scheinen mir in den vielen obigen SQL-Befehlen manche Semikola oder Leerzeichen "falsch" - rein gefühlsmäßig.

MfG

pelzig 6. Feb 2015 19:09

AW: AccessDB in csv-Datein umwandeln
 
Zitat:

Zitat von Sir Rufo (Beitrag 1289063)
Hauahauaha ... hier sind ja einige Anfänger unterwegens :mrgreen:
(Nein, nicht schlagen ... ich bin ja schon lieb :stupid:)

So dann lösen wir mal das Rätsel:

Dieses ominöse
Code:
FMT=...
wird beim Export nicht ausgewertet. Da kann man auch hinschreiben
Code:
FMT=Oma ihr klein Häuschen;
und man bekommt das gleiche Resultat.

Hintergrund:

In der Registry
Code:
HKLM/SOFTWARE/Microsoft/Jet/4.0/Engines/Text
gibt es einen Eintrag Format und der steht default auf CSVDelimited, was gleichbedeutend mit dem
Delphi-Quellcode:
,
ist. Und genau das beisst sich mit der (in Deutschland gültigen) Regions-Einstellung für das Dezimaltrennzeichen
Delphi-Quellcode:
,
.

Man kann jetzt die Registry ändern (doof), die Regionseinstellungen ändern (noch doofer :stupid:) oder man schreibt in das Export-Verzeichnis eine schema.ini (wurde hier auch schon genannt).

Hier wird also für jede Exportdatei eine Sektion angelegt die folgende Einträge zwingend enthalten muss (beispielhaft für die Categories.csv)
Code:
[Categories.csv]
Format=Delimited(;)
oder, wenn es eine Komma-getrennte Datei werden soll
Code:
[Categories.csv]
Format=CSVDelimited
DecimalSymbol=.
CurrencyDecimalSymbol=.
Alle weiteren Möglichkeiten der Konfiguration finden sich im oben angegebenen Link.

Das dazu passende Export-Statement lautet also
SQL-Code:
SELECT * 
INTO [Text;HDR=Yes;DATABASE=C:\DBLoesungen;].[Categories.csv]
FROM Categories;
So dann noch ein fröhliches Exportieren :)

Push :oops:

blema 6. Feb 2015 23:22

AW: AccessDB in csv-Datein umwandeln
 
vielen Dank an alle...

BadenPower 6. Feb 2015 23:54

AW: AccessDB in csv-Datein umwandeln
 
Zitat:

Zitat von blema (Beitrag 1289094)
vielen Dank an alle...

Was war die Lösung?

Ich schätze einmal die Schema.ini!

p80286 7. Feb 2015 09:56

AW: AccessDB in csv-Datein umwandeln
 
Die Schema.ini ist es.
Wenn du allerdings Tante G fragst, wird sie meist für dem Import genutzt. Heb Dir Sir Rufos Erläuterungen gut auf, die sind besser als das meiste was Du finden kannst.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 4 von 6   « Erste     234 56      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz