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.
Flowheater Chart

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen

  • Andreas Schauerte
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
5 Jahre 10 Monate her #3590 von Andreas Schauerte
Hallo!
Ich habe eine ODBC-Quelle bei welcher 5 Spalten á max. 30 Zeichen enthalten sind. Diese möchte ich in 3 Spalten á max. 50 Zeichen einer MySQL Datenquelle aufteilen. Nun sollten die Inhalte sauber bei einem Leerzeichen getrennt werden. Ich habe den Inhalt der 5 Spalten schon in eine Spalte (MySQL) übernommen, das macht das ganze vielleicht einfacher.
Können Sie mir helfen? Vielen Dank im Voraus!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Jahre 10 Monate her - 5 Jahre 10 Monate her #3593 von FlowHeater-Team
Hallo Herr Schauerte,

am einfachsten wird es sein, wenn Sie dazu ein kleines Skript für den .NET Script Heater verwenden. Ich habe Ihnen das Skript soweit vorbereitet, siehe unten. Sie müssen im Skript lediglich die maximale Länge pro Spalte/Feld eintragen. Anhand dieser Angabe fügt das Skript in die übergebene Zeichenfolge jeweils ein Trennzeichen "-#-" an der Position der Teilzeichenkette ein die die Maximale Länge widerspiegelt. Falls das verwendete Trennzeichen "-#-" bei Ihnen in den Zeichenfolgen vorkommen kann, ggf. ein anderes Trennzeichen verwenden.

Das Skript bzw. der .NET Script Heater erfordert einen Eingabeparameter mit der Zeichenfolge die dann mit dem Trennzeichen präpariert werden soll. Hierzu verwenden Sie den String Append Heater um die 5 ODBC Felder miteinander zu einer Zeichenfolge zu verbinden. Als Trennzeichen verwenden Sie hier ein Leerzeichen.

Um die so präparierte Zeichenfolge nun auf die 3 Spalten/Felder der MySQL WRITE Seite aufzuteilen benötigen Sie 3x den String Split Heater , der die Zeichenfolgen anhand des Trennzeichen „-#-“ in drei Teile aufteilt. Hinweis: Wenn Sie die Option „Warnung generieren, wenn Rückgabespalte größer als verfügbare Spalten“ deaktivieren, wird keine Warnung ausgegeben falls mal eine kürzere Zeichenfolge vorhanden sein sollte.

Im Anhang finden Sie ein kleines Beispiel dazu.

Dateianhang:

Dateiname: skript-str...plit.zip
Dateigröße:3 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 5 Jahre 10 Monate her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Andreas Schauerte
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
5 Jahre 10 Monate her #3600 von Andreas Schauerte
Guten Abend Herr Stark!
Das sieht für die erste Spalte sehr gut aus! Bei den darauffolgenden Spalten trennt das Skript jedoch beim ersten vorkommenden Leerzeichen, auch wenn die Länge noch gar nicht ausgereizt ist.
Ich habe versucht, im Skript eine Abfrage mit einer MinLen einzubauen, das klappt aber leider nicht.
Haben Sie einen Tipp für mich? Vielen Dank!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Jahre 10 Monate her #3601 von FlowHeater-Team
Hallo Herr Schauerte,

sorry da hat sich ein kleiner Fehler eingeschlichen, hier das korrigiert C# Skript
Code:
// hier die Maximale Zeichenketten Länge pro Spalte eintragen. int MaxLen = 20; string sTrennzeichen = "-#-"; public object DoWork() {   if (InValues.Length != 1)     throw new ArgumentException("Es wird ein Eingangsparameter erwartet!");   string sIN = (string)InValues[0].GetString();   string [] sParts = sIN.Split(new char [] {' '});   string sRet = String.Empty;   int aktLen = 0;   foreach(string sPart in sParts)   {     if ((aktLen + sPart.Length + sTrennzeichen.Length) > MaxLen)     {       // Trennzeichen enfügen       sRet += sTrennzeichen;               // aktuelle Länge zurücksetzen       aktLen = 0;     }     if (aktLen != 0)     {       sRet += " ";       aktLen++;     }     sRet += sPart;     aktLen += sPart.Length;   }   return sRet; }
Code:


gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Andreas Schauerte
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
5 Jahre 10 Monate her #3602 von Andreas Schauerte
Hallo Herr Stark,

vielen Dank für das Skript, das hilft mir ungemein!

Viele Grüße

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.284 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.