| |
|
|
 Christof Neuß | ¡Hola,
siempre si denkst lo va otra vez, kommt de irgendwo una Stoppschild her...
Wenn Yo mi CSV-Expediente con un Hex-Editor öffne, sieht el al Anfang así de como en el angehängten Expediente a ersehen es.
Diese CSV-Archivos kommen de una Großrechner de el Rechenzentrum y son wohl con un otro Zeichensatz codiert. Excel, Windows-Editor y otro Programas hacer eigentlich no Schwierigkeiten. Evtl. muss Yo el ersten beiden Signo löschen, aber sonst klappt el.
Yo möchte esta Archivos - el durchaus veces 150 MB groß voluntad puede - en una Speicherbereich y luego en una/mehrere Arrays invitar, en esta entonces weiterverarbeiten a puede. Der "normale", zeilenweise Weg encima "Input #2, DateiInhalt$" funktioniert, es aber muy langsam. Daher el Intento, el Expediente con "Blockread" rápidamente en una Zona a holen.
Lo son no Fehlermeldung, aber beim ersten 00-Byte, also después de el "P" hört Blockread en.
Was kann Yo tun oder welche otro elegante Solución hay, una CSV-Expediente ruckzuck a importieren?
Vielen Dank y viele Grüße
Christof |
 |
|
| |
|
|
|
 Michael W. | FF FE es el BOM para UTF-16-LE.
Windows Unicode es UTF-16 (LE)
WideString (v X3) kann el BOM erkennen y automáticamente entfernen.
BlockRead muß entonces con el alten Syntax con Offset y Anzahl genutzt voluntad. Dann voluntad el Daten simplemente como Datenblock betrachtet y puede simplemente leerse. Mit WideString y natürlich auch con "Declare wide stringvar" kann entonces bastante normal de el Zona en Variables getextet voluntad. |
|
|
| |
|
|
|
 Christof Neuß | Also, el funktioniert ahora ya veces einigermaßen bien. Aber Yo bin todavía no al Ziel...
Var Expediente$="C:\_SEntw\_XProfanX3_1\_TestDB_mit_CSV\GGBIDA_KDU.CSV"
Var DateiLaenge&=FileSize(Expediente$)
MessageBox(Str$(DateiLaenge&),"Meldung",0)'112436764
Var DateiGelesen&=0
Var Ergebnis$=""
Declarar Zona#
Dim Zona#, DateiLaenge&
Asignar #1, Expediente$
OpenRW #1
DateiGelesen&=BlockRead(#1, Zona#, 0, DateiLaenge& )
Cerrar #1
MessageBox("Fertig con Einlesen","Meldung",0)
'Ergebnis$=WideString(Zona#, 0) '--> dauert ewig
'Ergebnis$=WideChar(Zona#, 0, DateiLaenge&) '--> Fehlermeldung Zugriffsverletzung!
'Funktioniert así a ca. 56.700.000
Ergebnis$=WideChar(Zona#, DateiLaenge&-100,100)'--> Funktioniert! STRING es also vollständig como.
MessageBox(left$(Ergebnis$,300),"Meldung",0)'sólo, en a sehen, si auch qué angekommen es
El Expediente es also encima 100 MB groß, el Yo einlesen möchte. Einlesen funktioniert auch. Und el correcto rápidamente.  Der anschließende Übertrag en un normale String-Variable hakt allerdings todavía algo.
Hab's sólo con WideString() probiert. Das Programa es weder en el Interpreter todavía como EXE para Ende gekommen. Musste Yo siempre abbrechen.
Mit WideChar() es irgendwie sólo a knapp 57 Mio. Signo. Darüber kommt una Fehlermeldung.
Posesiones entonces veces el "Ende" el Bereichsvariablen überprüft. Klappt. Hay also todos Daten en el Speicher.
Alguien ni Concepto dazu?
Wiederum "Danke y Gruß"
Christof |
|
|
| |
|
|
|
 H.Brill | El interne Listboxliste dürfte evtl. a klein ser. Immerhin laut Ayuda :
Ab Versión 11 kann ellos a a 260.000 Cuerdas aufnehmen y verwalten
Como du Versión X3 a haben scheinst, podría uno todavía el Intento con
Move("FileToList", Dateiname$)
probieren.
In diesem Zusammenhang wäre lo interessant, si la beiden Move-Características (FileToList y ListToFile) auch el Codierungen como optionalen Parámetro berücksichten könnten. Man ha sí des Öfteren anders (UTF-8, UTF-16 usw.) codierte Textdateien. Dann podría uno el separate Umwandlung sparen.
Wäre una Wunsch para nächsten Actualización. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 06.11.2016 ▲ |
|
|
|
|
 Michael W. | Yo weiß sí no qué como genau entonces con el Daten passieren se. Also simplemente veces 2 Überlegungen:
1. Blockweise Einlesen. Schau Usted simplemente veces a, como el Zeilenende codiert es. Dann una großen Block einlesen y zurück a a una Zeilenende. Also Anzahl el gelesenen Signo reduzieren. Das todo bearbeiten y otra vez wegschreiben. Danach a el neuen (evtl. reduzierten) Punto más einlesen. Bis alles por es.
2. Kombinieren con Firebird oder SQLite Blockweise Einlesen y igual en el Datenbank. Und entonces sólo en el Datenbank bearbeiten. Como dürfen el Daten fast cualquier groß voluntad.
Lo muß sí no alles en el Hauptspeicher a dieser platzt. Wenn entonces el Bearbeitung no satzweise tener lugar se, pero cierto Bereiche summiert voluntad debería es una Datenbank sowieso mejor, como entonces mittels Select muy viel mehr y luego auch muy viel más rápido hecho voluntad kann.
Übrigens pensamiento Yo a una ECHTE Csv-Expediente. Diese besteht de más Sätzen (Zeilentrenner unbekannt, como Ausschnitt a klein) y innerhalb el Sätze de más Feldern (el con TAB \t getrennt son). |
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 07.11.2016 ▲ |
|
|
|
|
 Christof Neuß | ¡Hola Michael,
vielen Dank para el Hinweise, el me ya bien weitergeholfen haben. Auch si yo otra vez längere Tiempo otro Dingen beschäftigt war, es el Thema todavía aktuell para mich.
Aufgrund el einfachen Einbindung de Firebird, voluntad Yo así trabajo. Ziel/Tarea es, mehrere (relativ große) CSV-Archivos (Tab getrennt, UTF-16) möglichst rápidamente en el Datenbank a übertragen.
Tal vez hast Usted todavía unos pocos Tipps para mich (natürlich darf se auch cada otro gerne informe), como yo al besten hinbekomme?!
Vielen Dank y Saludo
Christof |
|
|
| |
|
|