FlowHeater Demo Video
 
FlowHeater - The Data Import / Export Specialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen 3 Wochen 1 Tag her #3590

  • Andreas Schauerte
  • Andreas Schauertes Avatar Autor
  • Offline
  • Beiträge: 66
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.

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen 3 Wochen 21 Stunden her #3593

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1346
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:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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: von FlowHeater-Team.

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen 2 Wochen 3 Tage her #3600

  • Andreas Schauerte
  • Andreas Schauertes Avatar Autor
  • Offline
  • Beiträge: 66
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.

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen 2 Wochen 3 Tage her #3601

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1346
Hallo Herr Schauerte,

sorry da hat sich ein kleiner Fehler eingeschlichen, hier das korrigiert C# Skript
// 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;
}


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.
Folgende Benutzer bedankten sich: Andreas Schauerte

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.

Lange Zeichenfolge in MySQL in mehrere Spalten sauber aufteilen 2 Wochen 2 Tage her #3602

  • Andreas Schauerte
  • Andreas Schauertes Avatar Autor
  • Offline
  • Beiträge: 66
Hallo Herr Stark,

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

Viele Grüße

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en