Español
Foro

Blockread liest CSV-Expediente no ein; otro Codierung

 

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

71 kB
Bezeichnung:Screenshot_CSV_Datei
Hochgeladen:04.11.2016
Ladeanzahl171
Descargar
 
Win10 16 GB RAM
04.11.2016  
 




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.
 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
04.11.2016  
 




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
 
Win10 16 GB RAM
06.11.2016  
 




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
 
XProfan X3
Win10 16 GB RAM
14.09.2017  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.796 Views

Untitledvor 0 min.
Walter22.12.2022
Rschnett06.08.2022
ecki01.04.2019
Torsten Rümker02.01.2019
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie