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.

THEMA: Unterschiedliche Import/Export Pfade

Unterschiedliche Import/Export Pfade 6 Jahre 5 Monate her #89

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Anfrage per Email erhalten.

Sehr geehrte Damen und Herren,

ich verwende jetzt Ihr Produkt schon längere Zeit und bin sehr zufrieden. Ist es damit auch möglich unterschiedliche Eingangs- und/oder Ausgangsdateien/Datenbanken zu nutzen?

z.B. will ich nicht jedes mal das Script öffen und die Pfade anpassen sondern ein Automatismus wie folgt erstellen:

1. Anlegen von konvertieren_csv2MySQL.fhd

2. diese Datei nutzen für:
heute konvertieren_csv2MySQL.fhd datei07.csv 2010_07
nächsten Monat konvertieren_csv2MySQL.fhd datei08.csv 2010_08


Mit freundlichen Grüßen
Uwe Richter
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Unterschiedliche Import/Export Pfade 6 Jahre 5 Monate her #90

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Richter,

Über das Batch-Modul haben Sie die Möglichkeit mit den Aufrufoptionen

/ReadFileName dateiname bzw. /WriteFileName dateiname

den Dateinamen und Pfad, der in der Definition hinterlegt/gespeichert ist vor der Ausführung zu überschrieben. Dies funktioniert allerdings nur zusammen mit dem TextFile Adapter bzw. dem Excel Adapter.

Sie möchten vermutlich auch noch auf der WRITE Seite vor dem Import eine neue Tabelle dynmaisch anlegen? Das würde zusammen mit dem .NET Script Heater und einen wenig Code funktionieren.

Erstellen Sie dazu ganz normal Ihre CSV Import Defintion. Nachdem Sie den Import getestet haben ziehen Sie einen .NET Script Heater per Drag & Drop in eine bestehende Verbindung und fügen weiter unten stehenden .NET Script Code ein.

Wichtig: Der .NET Script Heater muss zwischen eine bestehende Verbindung gezogen werden da sonst der Code nicht dynamisch ausgeführt wird!

Der Code legt pro Import eine neue Tabelle t_DynImport + Aktuelles Datum und Uhrzeit an. Als Basis werden die auf der WRITE Seite vorhandenen Felder verwendet. Schauen Sie sich das ganze einmal an. Anpassungen am Tabellennamen bzw. Aufbau der Tabelle z.B. Primary Key können relativ schnell durchgeführt werden.
bool bFirst = true;

public object DoWork()
{
 if (bFirst)
 {
  // nur vor 1. Datensatz aufrufen
  bFirst = false;
  bool primary = true;

  string tabelle = "t_DynImport_" + DateTime.Now.ToString("yyyyMMdd_hhmmss");

  BaseDBAdapter adapter = (BaseDBAdapter)AdapterWrite;
  adapter.SQL = "select * from " + tabelle;

  string sql = "create table " + tabelle + " (";

  int len = 0;
  int count = 0; 
  foreach(Field f in adapter.Fields)
  {
   BaseDBAdapterField field = (BaseDBAdapterField)f;

   if (count > 0)
    sql += ", ";

   sql += "[" + field.Name + "] ";
   switch(field.DataType)
   {
    case DataType.String:
     len = field.Length;
     if (len == 0)
      len = 100;

     //SQL Datentyp für strings
     sql += "varchar(" + len.ToString() + ")";
     break;


    case DataType.Date:
    case DataType.Time:
    case DataType.DateTime:

     //SQL Datentyp für datetime
     sql += "datetime";
     break;

    case DataType.Bool:
     //SQL Datentyp für Bool: bei MSSQL bit verwenden!
     sql += "boolean";
     break;


    case DataType.Int:
     //SQL Datentyp für Int (Ganzzahl)
     sql += "Integer";
     break;


    case DataType.Double:
    case DataType.Currency:

     //SQL Datentyp für Double und Currency, evtl. auch numeric(18,2) ...
     sql += "Float";
     break;
   }
   
   if (primary) {
      primary = false;
      sql += "not null ";
   }
   
   count++;
  }

  sql += " );";
    
  //File.WriteAllText("C:\\Temp\\sql.txt", sql);

  // Tabelle anlegen
  adapter.Execute(sql);
 }

 // Eingangsparameter einfach wieder zurückliefern!
 return InValues[0].GetValue();
}
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Unterschiedliche Import/Export Pfade 6 Jahre 4 Monate her #91

  • U. Richter
  • U. Richters Avatar
  • Offline
  • New Member
  • Beiträge: 1
Gibts den Code auch in VB?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Unterschiedliche Import/Export Pfade 6 Jahre 4 Monate her #92

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hier der Code in VB.NET. Der Code wurde leicht angepasst, mit dieser Version wird die Tabelle nicht im TestModus angelegt!

Noch ein Hinweis: Der Code legt momentan keine PrimaryKeys sowie evtl. AutoWerte an.
Dim bFirst as Boolean = true

Public Function DoWork() As Object

	' Nur beim 1. Aufruf sowie nicht im TestModus!
	If bFirst = True And AdapterWrite.OnlyTest = False then		
		' nur vor 1. Datensatz aufrufen
		bFirst = false
		
		Dim primary as boolean
		primary = true

		Dim tabelle as String
		tabelle = "t_DynImport_" + DateTime.Now.ToString("yyyyMMdd_hhmmss")

		Dim adapter as BaseDBAdapter
		adapter = AdapterWrite

		adapter.SQL = "select * from " + tabelle

		Dim sql as String
		sql = "create table " + tabelle + " ("


		Dim len as Integer
		Dim count as Integer

		len = 0
		count = 0

		For Each f as Field in adapter.Fields
			Dim field as BaseDBAdapterField
			field = f

			If count > 0 Then 
				sql = sql + ", "
			End If

			sql = sql + "[" + field.Name + "] "
			
			Select Case field.DataType

				Case DataType.String
					len = field.Length
				     	If len = 0 Then
					      len = 100
					End If

				     'SQL Datentyp für strings
				     sql = sql + "varchar(" + len.ToString() + ")"

				Case DataType.Date, DataType.Time, DataType.DateTime
					'SQL Datentyp für datetime
					 sql = sql + "datetime"


				Case DataType.Bool
					'SQL Datentyp für Bool: bei MSSQL bit verwenden
					sql = sql + "boolean"

				Case DataType.Int
				     'SQL Datentyp für Int (Ganzzahl)
				     sql = sql + "integer"

				
				Case  DataType.Double, DataType.Currency
					'SQL Datentyp für Double und Currency, evtl. auch numeric(18,2) ...
				     	sql = sql + "float"

			End Select

			If primary = True Then
			      primary = False
			      sql = sql + " not null "
			End If

			count = count + 1			
		Next f

		sql = sql + " );"

		'Tabelle anlegen
		adapter.Execute(sql)
	End If        

	DoWork = InValues(0).GetValue()

End Function
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.079 Sekunden