AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi AccessDB in csv-Datein umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

AccessDB in csv-Datein umwandeln

Ein Thema von blema · begonnen am 5. Feb 2015 · letzter Beitrag vom 8. Feb 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: AccessDB in csv-Datein umwandeln

  Alt 6. Feb 2015, 18:48
Hauahauaha ... hier sind ja einige Anfänger unterwegens
(Nein, nicht schlagen ... ich bin ja schon lieb )

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 , ist. Und genau das beisst sich mit der (in Deutschland gültigen) Regions-Einstellung für das Dezimaltrennzeichen , .

Man kann jetzt die Registry ändern (doof), die Regionseinstellungen ändern (noch doofer ) 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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 6. Feb 2015 um 18:52 Uhr)
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#2

AW: AccessDB in csv-Datein umwandeln

  Alt 6. Feb 2015, 19:09
Hauahauaha ... hier sind ja einige Anfänger unterwegens
(Nein, nicht schlagen ... ich bin ja schon lieb )

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 , ist. Und genau das beisst sich mit der (in Deutschland gültigen) Regions-Einstellung für das Dezimaltrennzeichen , .

Man kann jetzt die Registry ändern (doof), die Regionseinstellungen ändern (noch doofer ) 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
  Mit Zitat antworten Zitat
blema

Registriert seit: 5. Feb 2015
48 Beiträge
 
#3

AW: AccessDB in csv-Datein umwandeln

  Alt 6. Feb 2015, 23:22
vielen Dank an alle...
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: AccessDB in csv-Datein umwandeln

  Alt 6. Feb 2015, 23:54
vielen Dank an alle...
Was war die Lösung?

Ich schätze einmal die Schema.ini!
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: AccessDB in csv-Datein umwandeln

  Alt 7. Feb 2015, 09:56
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: AccessDB in csv-Datein umwandeln

  Alt 7. Feb 2015, 11:19
Generell muss man natürlich anmerken, dass es keine vernünftige Dokumentation von MS zu diesem ISAM Treiber gibt. Maximal ein wenig bla bla.

Generell gehen die davon aus, dass eine CSV nur dann sinnvoll interpretiert werden kann, wenn es eine schema.ini dazu gibt. Recht haben sie ja, denn dort ist die Struktur der Datei hinterlegt.

Als Vorgehesweise sollte man sich also merken immer eine schema.ini anzulegen (falls diese fehlt) und dann den Import/Export zu starten. Dann sollte z.B. auch der Import in Excel wunderbar funktionieren.

Und wenn man solche Dateien verschickt, dann auch immer diese schema.ini mitliefern. Der Empfänger wird es danken (falls der sich nicht denkt "Wasn dasn?" ).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#7

AW: AccessDB in csv-Datein umwandeln

  Alt 7. Feb 2015, 12:44
Wenn die Beseitigung des Problems des TE mit der Erstellung der Schema.ini erfolgreich war, dann stellt sich für mich die Frage, warum der Fehler in Post #28 immer noch nicht behoben war.

Warum versucht man eigentlich zu helfen, wenn die Lösungsvorschläge dann doch nicht umgesetzt/probiert werden?

In #29 bin ich schon davon ausgegangen, dass er #27 erledigt hat.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz