Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Mit der Freeware Version können bis zu 100.000 Datensätze verarbeitet werden!
Flowheater Chart

Datenimport einer .txt Datei zu Access

Mehr
4 Jahre 6 Tage her #4119 von Peter Müller
Hallo zusammen,

ich würde gerne eine Textdatei in Access importieren.

Meine Textdatei sieht von der Struktur so aus:

000000121214
0000002Artikel
0000003Meschriftung 1
0000003Meschriftung 2
0000003Meschriftung 3
0000003Meschriftung 4
0000003Meschriftung 5
0000003Meschriftung 6
000000710070,50
000000121215
0000002Artikel
0000003Meschriftung 1
0000003Meschriftung 2
000000710070,50
000000121216
0000002Artikel
0000003Meschriftung 1
0000003Meschriftung 2
0000003Meschriftung 3
0000003Meschriftung 4
0000003Meschriftung 5
0000003Meschriftung 6
0000003Meschriftung 7
000000712070,50

.... und zusammen sind es dann 400.000 Einträge.

Nun würde ich diese Einträge gerne in eine Access Datenbank importieren. Das besondere ist aber, dass ich unter dem Code 0000003 mehrere Einträge habe, das dann vermutlich zu mehreren Datensätzen führen wird. Oder?

Meine Frage, kann flowheater mir die Daten in Access übertragen und wie kann ich das in flowheater anlegen?

Viele Grüße Peter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 5 Tage her - 4 Jahre 5 Tage her #4120 von FlowHeater-Team
Hallo Herr Müller,

das ist etwas Tricky aber machbar :-) Das Problem ist, dass in Ihrer Textdatei die Feldnamen nicht per Trennzeichen vom Inhalt separiert sind. Im Anhang habe ich Ihnen mal ein Beispiel inkl. Access Datenbank erstellt. Hier werden die Felder mit dem Code „0000003“ per Trennzeichen „#“ getrennt in einem Feld zusammenfasst. Falls Sie was anderes benötigen einfach nochmal etwas konkreter schreiben was genau benötigt wird.

Vorgehensweise Punkte siehe Screenshot
  1. Über diese beiden SubString Heater  werden die Feldnamen vom Feldinhalt separiert.

  2. Dann wir eine GroupBy Heater  benötigt, der alle Zeilen die zu einem Datensatz gehören zu einem zusammenfasst. In Ihrem Fall habe ich den Code bzw. Feldnamen „0000001“ verwendet.

  3. Dann benötigen Sie für jedes Feld, das Sie auf die WRITE Seite übertragen möchten einen IF-THEN-ELSE Heater  der prüft, welche Code bzw. Feldname gerade verarbeitet wird. Das wird benötigt, damit im Access Datenbankfeld auch wirklich nur der richtige Inhalt geschrieben wird.

  4. Beim Feldnamen bzw. Code „0000003“ wird zusätzlich noch ein String Append Heater  benötigt, der alle vorhandenen Feldinhalte anhand der Gruppierung zusammenfügt, hier wurde das Trennzeichen „#“ verwendet, kann aber beliebig geändert werden.
Das Beispiel erzeugt mit Ihrer Beispiel Textdatei 3 Datensätze in der Access Datenbank . Gerne können wir das Beispiel noch weiter anpassen. Hierzu bitte aber etwas besser beschreiben wie die Daten bzw. in welche (evtl. unterschiedliche) Tabellen die Inhalte importiert werden sollen.



Dateianhang:

Dateiname: line-based-import.zip
Dateigröße:20 KB

gruß
Robert Stark
Letzte Änderung: 4 Jahre 5 Tage her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 5 Tage her #4121 von Peter Müller
Vielen Dank für die schnelle Antwort!

Nur nochmal zur
Erklärung: Die 7 Ziffern "0000001" beschreiben den ersten
Artikel und die Beschreibung endet vor der nächsten
"0000001".
Dieser "Bereich" ist allerdings
sehr unterschiedlich lang, weil zu Ziffer "0000003" manchmal
10 oder mehr Einträge existiert.

Wenn man die Textfelder
"0000003" in ein Datenfeld mit # trennt, kann man
vermutlich diese Daten nicht sehr gut in gegen andere Daten laufen
lassen oder? Ich möchte nämlich verschiedene csv Tabellen gegen die
"Übernahme Textdatei" laufen lassen.
Außerdem sind die„Codefelder“ nicht einfach fortlaufend, sondern zum Teil fehlen
auch Ziffern, aber der Code ist immer eindeutig, also also
Beschriftung. Der Code 1454545 ist z.B. immer der Einkaufspreis.


Ich dachte die Struktur sollte dann wie folgt aussehen:


0000000(KEY); 0000001(ID Artikel ), 0000002(Artikelname),
0000003 (Beschriftung 1)
0000000(KEY); 0000001(ID Artikel ),
0000002(Artikelname), 0000003 (Beschriftung 2)
0000000(KEY);
0000001(ID Artikel ), 0000002(Artikelname), 0000003 (Beschriftung
3)
0000000(KEY); 0000001(ID Artikel ), 0000002(Artikelname),
0000003 (Beschriftung 4)
0000000(KEY); 0000001(ID Artikel ),
0000002(Artikelname), 0000003 (Beschriftung 5)
0000000(KEY);
0000001(ID Artikel ), 0000002(Artikelname), 0000003 (Beschriftung
6)

Oder macht die Struktur dann keinen Sinn für "einen"
Artikel?
Gerne würde ich die Daten weiter analysieren, bin aber
noch nicht wirklich sicher, wie ich das am besten angehen soll.

Gibt es von Ihnenauch eine Libreoffice Adapter?


VG Peter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 5 Tage her - 4 Jahre 5 Tage her #4122 von FlowHeater-Team
Hallo Herr Müller,

ich denke das habe ich soweit verstanden. Haben Sie die Definition mal ausgeführt? Das Ergebnis ist folgendes.



Ein Artikel beginnt mit dem Code 0000001 und es ist egal wieviel weitere Felder folgen. Die Beschriftungen werden dynamisch (je nach vorkommen) in das Feld geschrieben. Mit den IF-THEN-ELSE Bedingungen definieren Sie, welche Felder (CODE) sie auf die WRITE Seite übernehmen möchten. Was nicht definiert ist wird überlesen.

Es wäre auch möglich die Felder in separate Felder, der gleichen Tabelle, oder aber in zusätzliche Tabelle als separate Datensätze zu importieren. Wenn Sie Beschreiben wie es aussehen soll kann ich dazu ein Beispiel erstellen.

PS: Es gibt im FlowHeater leider keinen nativen Adapter für LibreOffice. Falls Sie den ODBC Treiber für LibreOffice Base installiert haben können Sie dafür den ODBC Adapter verwenden.

gruß
Robert Stark
Anhänge:
Letzte Änderung: 4 Jahre 5 Tage her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4154 von Peter Müller
Hallo Herr Stark, alle zusammen,

ich probiere gerade die Flow-Heater Software aus und bin begeistert, wie gut Sie funktioniert.

Allerdings stolpere ich gerade über die folgenden Problem und stelle die Fragen hier mal ins Forum:

1. Ich habe einen IF - Heater eingebaut, der auch wunderbar funktioniert. Nun möchte ich weitere Datensätze mit der dem gleichen Filter entspricht mit dem Append - Heater hinzufügen, aber nun bekomme ich leider keinen Datensatz mehr angezeigt, sondern nur noch den Hash(#).

Was mache ich denn falsch?

2. Ich habe einen neuen Datensatz erstellt, der keine Einträge hat, kann ich diesen irgendwie einfach löschen oder rausfiltern aus der Write-Liste?

Gibt es diese Möglichkeit, und wenn ja wie?

Viele Grüße Peter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4155 von FlowHeater-Team
Hallo Herr Müller,

zu 1) können Sie bitte Ihre erzeugte Definition inkl. Testdaten hier posten. Ich kann jetzt nur raten was evtl. nicht passt. Eine etwas genauere Beschreibung, was genau durchgeführt werden soll, wäre auch hilfreich :-)

zu 2) Datensätze filtern geht mit dem IF-THEN-ELSE Heater in Kombination mit dem Filter Heater . Hier finden Sie ein ausführliches YouTube Video dazu: Daten filtern – Quick Tutorial

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4156 von Peter Müller
Hallo Herr Stark, 

danke für die Rückmeldung! 

zu 1) Ich habe einen ganz "normalen" IF Heater eingebaut und ich erhalte auch einen Wert. Da die Rohdaten aber mehrere Werte enthält zu dem der IF Heater passt, hätte ich gerne auch die weiteren Werte in die "Write Tabelle" übertragen. Ich habe also eine "Append Heater" zwischen dem IF Heater und der Write Tabelle eingebaut.  (siehe Bild)

Leider erhalte ich keine Wert mehr. Ausgabe in der Write Tabelle:

" ;#; "

VG Peter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4157 von FlowHeater-Team
Hallo Herr Müller,

wenn sich der String Append Heater auf alle Datensätze der Gruppierung auswirken soll müssen Sie das noch im String Append Heater aktivieren, siehe Screenshot.


gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4158 von Peter Müller
Hallo Herr Stark, 

super, es funktioniert. Vielen Dank!

Gibt es auch einen Heater der Daten zusammenzufassen kann?

Ich habe nun mit  Append einzelne Eintrage mit # getrennt in einem Feld zusammengefasst, nun würde ich aber gerne noch aus der Read Datei den jeweils nächsten Datensatz zu dem Eintrag vor dem nächsten # einfügen, ist das auch möglich?

Ich stelle mir das so vor: Bsp.-Muster: 
000StandortA
001ArtikelA
002Regal17
001ArtikelB
002Regal1
001ArtikelC
002Regal6
001ArtikelD
002Regal9
001ArtikelE
002Regal18

Mein Datensatz sieht momentan so aus: A; Artikel A # ArtikelB # ArtikelC# ArtikelD # ArtikelE

Ziel: Ich würde gerne noch den Regalplatz mit in der Write-Datei anzeigen lassen. 
Mein Datensatz sieht nun so aus: A; Artikel A  17 # ArtikelB 1 # ArtikelC 6 # ArtikelD 9 # ArtikelE 18

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 10 Monate her #4159 von FlowHeater-Team
Hallo Herr Müller,

ich habe jetzt mal dazu ein kleines Beispiel erstellt, siehe Anhang.

Da ich nicht mehr Informationen habe gehe ich davon aus, dass die Gruppierung anhand des Standortes (000) durchgeführt werden soll?

Zusammenfassen mehrerer Zeilen geht mit dem GroupBy Heater sowie dem String Append Heater . Allerdings ist Ihre Anforderung, zwei Zeilen zusammen und dann erst wieder ein Trennzeichen nicht ganz so einfach abzubilden, deshalb habe ich hier zu einem zusätzlichen .NET Script Heater   und unten stehenden C# Skript zurückgegriffen.

Das C# Skript entfernt quasi wieder jedes zweites Trennzeichen aus der vorher gruppierten Zeichenfolge.

Hier wird dann -> A#ArtikelA#17#ArtikelB#1#ArtikelC#6#ArtikelD#9#ArtikelE#18
zu -> A#ArtikelA 17#ArtikelB 1#ArtikelC 6#ArtikelD 9#ArtikelE 18

Schauen Sie sich das mal an.


C# Skript um jedes zweite Trennzeichen wieder zu entfernen
Code:
public object DoWork() {  if (InValues.Length != 1)  throw new Exception("Es wird ein Eingangsparameter erwartet!");  string line = (string)InValues[0].GetString();  // Trennzeichen  char c = '#';  // Zeichenkette anhand des Trennzeichen aufteilen  string [] parts = line.Split(c);  string ret = String.Empty;  bool bAddDelimiter = true;  foreach(string part in parts)  {  ret += part;  // jedes 2. Trennzeichen entfernen  if (bAddDelimiter)  { ret += c;  }  else  { ret += " ";  }  bAddDelimiter = !bAddDelimiter;  }  // Abschließendes Trennzeichen entfernen!  if (ret[ret.Length - 1] == '#')  {  ret = ret.Substring(0, ret.Length - 1);  }    return ret; }

Dateianhang:

Dateiname: zeilen-zus...ssen.zip
Dateigröße:11 KB

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.345 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.