Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.
  • Seite:
  • 1

THEMA: CSV Export: Dateinamen dynamisch generieren

CSV Export: Dateinamen dynamisch generieren 6 Jahre 3 Monate her #211

  • Jens-Uwe Lein
  • Jens-Uwe Leins Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 7
Hallo,

wir exportieren Daten aus einem SQL Server und würden gerne den Exportdateinamen dynamisch generieren.
In unserem Fall enthalten die Export Daten ein Datumsfeld, welches wir mit dem daraus resultierenden Monat&Jahr für den Dateinamen nutzen möchten.

Gibt es für diese Anforderung einen Lösungsansatz?

Vielen Dank.
J.-U. Lein

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: CSV Export: Dateinamen dynamisch generieren 6 Jahre 3 Monate her #212

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1145
Hallo Herr Lein,

das geht mit dem .NET Script Heater und folgenden kleinen C# .NET Script.
public object DoWork()
{
	TextFileAdapter adapter = (TextFileAdapter)AdapterWrite;

	if (InValues.Length != 2)
	{
		throw new Exception("Es werden 2 Eingangsparameter benötigt");
	}
	
	// CSV Dateinamen nicht im Test Modus umbiegen!
	if (adapter.OnlyTest == false)
	{
		// den neuen Dateinamen im Textfile Adapter WRITE setzen = 2. Eingangsparameter
		// Achtung: dieses Vorgehen funktioniert nur im Massendaten Modus!
		adapter.Filename = (string)InValues[1].GetString();
	}

	// Ersten eingangsparameter einfach wieder zurückliefern!
	return InValues[0].GetValue();
}

Ziehen Sie den .NET Script Heater per Drag&Drop in irgendeine bestehende Verbindung.

Bitte beachten: Dieses Vorgehen ist wichtig, da sonst der Script Code ohne eine Verbindung zur WRITE Seite darin nicht ausgeführt wird!

Dann formatieren Sie den CSV Dateinamen mit den zur Verfügung stehenden Heatern/Funktionen so wie Sie es benötigen und verbinden den generierten dynamischen CSV Dateinamen als 2. Eingangsparameter mit dem .NET Script Heater. Das Script setzt nun den CSV Dateinamen im WRITE TextFile Adapter auf diesen neuen Namen während der Transformation. Den 1. Eingangsparameter gibt der .NET Script ohne Änderung für die Verarbeitung wieder zurück.

ACHTUNG
: Das Ganze funktioniert nur im Massendaten Modus !

Ich habe für Ihre Anforderung ein kleines Beispiel erstellt, siehe Angang "dynamische_csv_export_dateinamen.zip". Das Beispiel verwendet auf der READ Seite den TestData Adapter , hiermit werden lediglich ein paar Testdaten zur Veranschaulichung erzeugt. Der CSV Dateinamen wird hier dynamisch aus einem Datumsfeld, formatiert über den Format Heater , generiert. Der String Append Heater fügt alle Bestandteile des CSV Dateinamen zusammen und übergibt den vollständigen CSV Dateinamen als 2. Eingangsparameter an den .NET Script Heater.

Hinweis: Das Beispiel zeigt wie in einem Exportvorgang gleich mehrere CSV Textdateien geschrieben werden können. Sollten die unterschiedlichen CSV Dateinamen nicht in sortierter Reihenfolge vorliegen (wie in dem Beispiel) müssen Sie hierfür die Option "An vorhandenen Datei anfügen" im Textfile Adapter aktivieren.

Anhang dynamische_csv_export_dateinamen.zip nicht gefunden

Anhang:

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.

Aw: CSV Export: Dateinamen dynamisch generieren 6 Jahre 3 Monate her #213

  • Jens-Uwe Lein
  • Jens-Uwe Leins Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 7
Vielen Dank für die Unterstützung, Funktioniert wie gewünscht!
MfG

Lein

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.093 Sekunden