Unterschiedliche Import/Export Pfade
- FlowHeater-Team
- Autor
- Offline
- Administrator
Weniger
Mehr
14 Jahre 4 Monate her #89
von FlowHeater-Team
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.
Unterschiedliche Import/Export Pfade wurde erstellt von FlowHeater-Team
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
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Autor
- Offline
- Administrator
14 Jahre 4 Monate her #90
von FlowHeater-Team
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.
FlowHeater-Team antwortete auf Aw: Unterschiedliche Import/Export Pfade
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.
Ü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.
Code:
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- U. Richter
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 1
14 Jahre 4 Monate her #91
von U. Richter
U. Richter antwortete auf Aw: Unterschiedliche Import/Export Pfade
Gibts den Code auch in VB?
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Autor
- Offline
- Administrator
14 Jahre 4 Monate her #92
von FlowHeater-Team
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.
FlowHeater-Team antwortete auf Aw: Unterschiedliche Import/Export Pfade
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.
Noch ein Hinweis: Der Code legt momentan keine PrimaryKeys sowie evtl. AutoWerte an.
Code:
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.270 Sekunden