Hallo zusammen,
ich möchte gerne eine sehr große (16 Mio. Zeilen) Datenbank in eine .txt-Datei konvertieren. Die Option "exportieren ->Textdatei" scheidet hierbei aus, da das über die Windows-Zwischenablage geht, welche maximal 65.000 Datensätze verarbeiten kann. Ich bin völlig Access-unerfahren, aber hoffe doch, dass es eine Möglichkeit gibt, das zu machen.
Ich danke schon mal für eure Hilfe,
viele Grüße
donn_birdy
Hallo donn,
ich könnte mir vorstellen, dass du mit VBA (deine Tabelle in einen String schreiben und den dann abspeichern) weiter kommen könntest.
Ein anderer Ansatz mit VBA wäre, wenn du deine Tabelle Stück für Stück (65 000 Zeichen) in die Zwischenablge und dann in die Textdatei schreibst. Allerdings habe ich keine Ahnung, wie Access das umsetzt o.ä.
Für den oberen Lösungsansatz kenne ich leider zu wenige VBA-Befehle um dir da mehr zu helfen. Beachte, dass du da auch evtl. mehr strings brauchst, weil eine Stringvariable begrenzt ist. Also hier am besten ein Array nutzen.
Greets
Sulu
Hallo na,
handelt es sich bei deiner Datenbank nur um 1 Tabelle?
Beschreib mal den Tabellenaufbau und wie das in der txt-Datei aussehen soll.
Falls es nur 1 Tabelle ist kann man es dann ungefähr so machen:
Dim fs as Object
dim f as Object
dim Zeile as String
dim rsa as New ADODB.Recordset
dim sqla as string
dim fld as Variant
'txt- Datei aufmachen
set fs = CreateObject("Scripting.FileSystemObject")
set f = fs.OpenTextFile("Pfad&Name deiner txt-Datei",8,True,-1) 'google mal nach FileSystemObject um die Parameter zu verstehen und evtl an deine Bedürfnisse anzupassen
'jetzt Deine Tabelle in ein Recordset einlesen
sqla= "Select * from DeineTabelle"
rsa.open sqla,CurrentProject.Connection,adOpenKeyset, adLockOptimistic
'jede Zeile durchgehen, hinter jeder Spalte ein ";" als Trennzeichen einfügen und in die txt-Datei schreiben
while not rsa.EOF
for each fld in rsa.fields
Zeile= Zeile & fld.Value & ";"
next fld
f.writeline Zeile
Zeile = "" 'Zeile leeren für nächsten DS
rsa.movenext
wend
rsa.close
f.close
set fs = nothing
Den Code fügst du als Ereignisprozedur bspw bei einem Button auf einem Formular beim beimKlicken Ereignis ein.
Dann hast du eine txt-Datei, in der jeder Datensatz eine Zeile einnimmt und jede Spalte durch ein ";" getrennt ist.
Wenn du die Tabelle 2x exportierst ohne die txt-Datei zu sichern o.ä wird die gesamte Tabelle nochmal in die txt-Datei eingefügt (mit einem vbCrLf abstand). Musst allerdings beachten, das es bei 16 mio Zeilen "etwas" dauern kann ;-) Außerdem wird die Datei ziemlich groß, bei meiner Testdatenbank mit ca 300k DS waren es 36 mb und ca 5 min ::).
Wenn du willst kannst du dir auch noch eine Fortschrittsanzeige basteln, damit du in etwa weißt wie viele DS es noch sind und wie lange es noch etwa dauert.
mfg
Leo
Hallo,
Die Option "exportieren ->Textdatei" scheidet hierbei aus, da das über die Windows-Zwischenablage geht, welche maximal 65.000 Datensätze verarbeiten kann.
Das stimmt nicht. Es werden auch eine Million Datensätze exportiert, völlig problemlos. Der Export läuft auch nicht über die Windows-Zwischenablage. Das muss eine andere Ursache haben.
Mit was öffnest Du dann die Txt Datei zum ansehen?
Anbei ein Bild der letzten 10 Datensätze der Million. Nach dem Export geöffnet mit dem Editor.
Dauer des Exports etwa 20 Sekunden.
[Anhang gelöscht durch Administrator]
@MzKlMu
Das verstehe ich nicht, wie machst du das? Ich erkläre dir mal mein Vorgehen, als absoluter Access-Laie:
Ich öffne die Datenbank - hier wird links der Name meiner Tabelle angezeigt, klicke ich doppelt drauf, wird sie geöffnet. Wenn ich dann in der Registerkarte "exportieren" auf "Excel" oder "Textdatei" klicke, kommt bei mir nach kurzer Zeit die Fehlermeldung: "Sie haben mehr Datensätze markiert, als auf einmal in die Zwischenablage kopiert werden können. Teilen Sie die Datensätze in mehrere Gruppen auf, die Sie dann nacheinander kopieren und einfügen. Sie können maximal etwa 65.000 Datensätze auf einmal einfügen."
Mein Ziel ist es, die .txt-Datei nach Excel zu konvertieren, um sie dann mit MATLAB zu öffnen. Evtl. geht das aber auch mit der .txt-Datei, das weiß ich noch nicht.
Danke für deine Mühe und Hilfe,
Grüße
donn_birdy
Hallo,
Du darfst die Tabelle zum Export nicht öffnen. Rechtsklick (ohne öffnen) und Export wählen.
Ein weiteres Problem ist Excel, Excel kann nur maximal 65536 Zeilen erfassen.
Erst ab Excel2010 geht glaube ich mehr.