Der Daten Import / Export Spezialist
Schauen Sie sich auch die verfügbaren Beispiele zum MySQL Adapter an evtl. kann Ihre Frage hiermit schon beantwortet werden: CSV Import , Nur neue Datensätze exportieren , Datenmigration

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen

  • Andreas Schauerte
  • Autor
  • Offline
  • Senior Mitglied
  • Senior Mitglied
Mehr
4 Jahre 1 Monat 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
4 Jahre 4 Wochen her - 4 Jahre 4 Wochen 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 wiederspiegelt. 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.
Anhänge:
Letzte Änderung: 4 Jahre 4 Wochen her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Andreas Schauerte
  • Autor
  • Offline
  • Senior Mitglied
  • Senior Mitglied
Mehr
4 Jahre 3 Wochen 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
4 Jahre 3 Wochen 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
  • Senior Mitglied
  • Senior Mitglied
Mehr
4 Jahre 3 Wochen 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.378 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en