[MS Access] Veel databases exporteren naar CSV

Pagina: 1
Acties:
  • 172 views sinds 30-01-2008
  • Reageer

  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Ik zoek al een tijdje naar een oplossing voor het volgende probleem.

Ik beschik over een 600+ tal MS Access databases waar meetdata in opgeslagen zit. Alle databases beschikken over één tabel met steeds dezelfde namen voor de velden. Iedere database bevindt zich in zijn eigen directory met nogal lompe lange naam.

De databases zijn voor de toepassing van de gegevens totaal niet handig en nu wil ik dus iedere database exporteren naar 600+ CSV tekstfiles.

Kent iemand een manier (liefst commandline) om dit snel en eenvoudig te doen zonder 600 keer handmatig te exporteren?

Het exporteren van één database middels de commandline zou overigens ook al een oplossing bieden.

[ Voor 10% gewijzigd door 0rbit op 06-08-2004 16:12 ]

Ik ben geheel voldaan, dank u wel!


Verwijderd

hit numero uno op google bij "mdb to csv"
http://www.convertzone.co...ccess%20Converter-1-3.htm

d'r zijn echt wel wat spulletjes voor te vinden.

  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Ja, die had ik ook al gevonden maar deze heeft als nadeel dat hij in de freeware versie maar 10 records exporteert.

Voor Linux is er ook een mooi tooltje genaamd MDBTools maar tja de bak waar de databases opstaan is nu eenmaal een Windows metingen vergaarbak.

Eerst exporteren naar MySQL en dan een dump maken is ook niet echt een optie aangezien het lichtelijk omslachtig is.

Misschien is zelf een kleine tool schrijven in VB nog wel het snelst.

In ieder geval bedankt voor je suggestie :)

Ik ben geheel voldaan, dank u wel!


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 25-08 11:17

glashio

C64 > AMIGA > PC

Voor het geval je met Visual Basic om kan gaan kijk dan hier eens :)
offtopic:
Mr.Mojo Rising Rulez 8)

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 27-08 14:13
Wil je met VBA aan de gang, kijk dan ff in mijn post [rml]Bud_s in "[ Access?] Importeren meerdere excel best..."[/rml]

daarin vind je een stukkie code om files in een bepaalde dir te doorlopen.


Natuurlijk ff code aanpassen :)

[ Voor 11% gewijzigd door Bud_s op 06-08-2004 18:15 ]


  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Het lezen van meerdere bestanden had ik al opgelost door gewoon een dir /s /b > content.txt te doen en dan dit bestand te doorlopen in plaats van de dir te doorzoeken :)

Dat ABC progje werkt overigens helemaal niet; Hij kan geen enkele database openen en geeft niet aan waarom. Van command line functionaliteit is ook nauwelijks sprake aangezien het ding dan bloedserieus een compleet windows venster gaat openen. Beetje nutteloos :)

Die VB code is denk ik wel een goede optie. Ik spreek niet echt VB maar het kan nooit moeilijk zijn aangezien ik al "het andere" al wel kan :P

Alvast bedankt in ieder geval. Ik ga er maandag weer mee aan de slag en als het gelukt is zal ik hier voor toekomstige bulk Access worstelaars de benodigde code wel even neerplanten :)

Van mij mogen ze trouwens MS Access wel hernoemen naar MS Inaccessible... Het is toch te gek voor woorden dat er niet een simpele msaccess.exe /export -source.mdb:table -csv destination.csv bestaat... :)

Ik ben geheel voldaan, dank u wel!


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 25-08 11:17

glashio

C64 > AMIGA > PC

Mr_Atheist schreef op 06 augustus 2004 @ 18:27:
Van mij mogen ze trouwens MS Access wel hernoemen naar MS Inaccessible... Het is toch te gek voor woorden dat er niet een simpele msaccess.exe /export -source.mdb:table -csv destination.csv bestaat... :)
Zie hier
msaccess.exe /X <macro> {Not the recommended method, use "Autoexec" macro instead or startup options. Do not use with compact or repair.}
Je kan proberen een macro te maken die bij opstarten een conversie script laat draaien.

[ Voor 3% gewijzigd door glashio op 06-08-2004 18:41 . Reden: typo ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Maak een nieuwe mdb met je tabel en een module met een procedure.

In de procedure loop je alle 600 mdb's af in een loop.
open de mdb
open een recordset voor de tabel
loop tot end of file
lees record
schrijf record in nieuwe tabel
sluit recordset en mdb
volgende mdb

Met Access is het gemakkelijk zo'n programmaatje te maken. Je kan debuggen etc.
Als je opnieuw wil beginnen kan je de tabel weer leeg maken. Net zo lang tot je tevreden bent.
Access in inaccessible voor de mensen die niets van programmeren weten. Je kan 1000 instructie combinaties proberen zonder dat je weet wat je aan het doen bent. En een resultaat krijgen waar je (misplaatst?) vertrouwen in hebt.

  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Het programma in VB is een eitje, maar bij het refreshen van de datacontrol hangt het... Het openen van de databases werkt dus gewoon niet.

De db's zijn allemaal in Access 95 formaat. Ik heb verscheidene andere db's gemaakt en die naar alle mogelijke Access formaten geexporteerd en daarbij hangt het programma ook.

Het maken van modules en macro's is niet mogelijk als ik zo'n db in 95 formaat open. Conversie naar 2000 of 2002 resulteert in vage rechten-errors en het spontaan sluiten van Access :)

Stel dat ik een macro maak voor een geconverteerde db, werkt deze dan ook op die db's in het 95 formaat?

Als mogelijke omweg overweeg ik nu een export naar Excell zodat ik de data direct in Matlab kan inlezen, maar ik denk dat ik dan tegen dezelfde problemen aanloop... :)

Ik ben geheel voldaan, dank u wel!


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 27-08 14:13
Mr_Atheist schreef op 09 augustus 2004 @ 10:14:
Het programma in VB is een eitje, maar bij het refreshen van de datacontrol hangt het... Het openen van de databases werkt dus gewoon niet.
[...]
Misschien dat je die code even kunt posten. Misschien dat we kunnen zien wat er misgaat.

  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Bud_s schreef op 09 augustus 2004 @ 11:29:
[...]

Misschien dat je die code even kunt posten. Misschien dat we kunnen zien wat er misgaat.
Ik gebruik grotendeels de code die eerder in dit topic gepost is. Gebruik ik de originele code dan werkt het ook niet.

Ik vind het net iets te verdacht dat zelfs Access er weinig kaas van kan maken. (Behalve dan door handmatig exporteren naar CSV)

Het relevante stuk code ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
*knip*

' Haal de bestandsnaam uit het veld
Data1.DatabaseName = CommonDialog1.FileName

*knip*

Data1.Refresh 
For Each td In Data1.Database.TableDefs
     Combo1.AddItem td.Name
Next

*knip*


Bij de regel "Data1.Refresh" gaat het al fout. De Combo1 wordt dus ook niet gevuld met de namen van de tabellen en ik kan de werking van het exporteren dus ook niet controleren.

Ik heb denk ik overigens al gevonden waar ik de code moet aanpassen. Er staat in de properties van de data control dat er een Access 2000 db verwacht wordt. Ik ga nu eens proberen wat er gebeurt als ik dit op Access zet.

Bedankt voor de hulp :)

Ik ben geheel voldaan, dank u wel!


  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Het laden van de mdb's lukt nu, maar de specifieke tabellen die ik wil exporteren hebben allemaal een lange naam met veel kommas en underscores. Dat geeft nog wat problemen met de SQL queries die in dat programma worden gemaakt. Daar kom ik denk ik wel uit :)

Okee, er moesten nog vierkante haken om de tabelnaam in de query. Het werkt naar behoren al is het niet zo supersnel, maar dat is niet erg belangrijk. Nu moet ik er nog even een commandline app van maken :)

[ Voor 30% gewijzigd door 0rbit op 09-08-2004 14:13 ]

Ik ben geheel voldaan, dank u wel!


  • Boss
  • Registratie: September 1999
  • Laatst online: 28-08 12:20

Boss

+1 Overgewaardeerd

Gewoon altijd de veldnamen netjes tussen [ en ] zetten :)

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 25-08 13:02
Boss schreef op 09 augustus 2004 @ 14:14:
Gewoon altijd de veldnamen netjes tussen [ en ] zetten :)
Ja, is wel zo netjes. VB bevalt me wel moet ik zeggen. Vooral het debug.print is erg handig als je eerst functionaliteit wil testen voor je een GUI bouwt :)

Ik ben geheel voldaan, dank u wel!

Pagina: 1