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: Instert in sql-Datenbank mit Löschen

Instert in sql-Datenbank mit Löschen 5 Jahre 7 Monate her #390

  • Martin
  • Martins Avatar
  • Offline
  • New Member
  • Beiträge: 14
Hallo, ich habe folgendes Problem. Softwarestand 1.32:

Ich lade Daten in eine Tabelle 1. Anschließend werden die Daten über eine "group by" Funktion zusammengefasst und in eine andere Tabelle 2 geschoben.

Nächster Lauf: Daten in Tabelle 1, "Tabelle vor dem Import leeren" usw.

Das Ganze mache ich 4x über den batch-Lauf.

So weit so gut.

Sind jedoch bei einem Lauf keine Daten vorhanden, also keine Daten in Tabelle 1 zu laden, dann werden die Daten auch nicht vorher gelöscht. Zusammengefasste Daten werden dann doppelt in die Tabelle 2 gestellt.

Gibt es hierfür einen bypass?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Instert in sql-Datenbank mit Löschen 5 Jahre 7 Monate her #392

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Sie können die Tabelle über eine zusätzliche Dummy Definition löschen.

Schauen Sie sich hierzu folgenden Forumsbeitrag an.

Ursprungstabelle leeren

Hier ist zwar beschrieben wie die Ursprungstabelle nach dem Import geleert werden kann, das gleich Vorgehen kann aber auch vor dem eigentlichen Import angewendet werden, so dass Ihre Tabelle vor dem Import immer sauber geleert ist.

In Ihrem Batch CMD Skript geben Sie dann folgendes an
@echo off
… vorherige Anweisungen
FHBatch.exe Import-Tabelle-Leeren.fhd
FHBatch.exe Daten-Import.fhd
… weitere Anweisungen
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: Instert in sql-Datenbank mit Löschen 5 Jahre 7 Monate her #393

  • Martin
  • Martins Avatar
  • Offline
  • New Member
  • Beiträge: 14
Hallo,

danke für die Antwort. Meines Erachtens wäre das ein Fehlverhalten der Anwendung. Ich kann das Problem aber auch so lösen.

Noch eine Frage hierzu: Ich arbeite in Tabellen mit einer "foreign key Einschränkung". Es gibt eine Tabelle 1, in der ein Kopfsatz steht, und eine Tabelle 2 in der sich Datensätze in der Tabelle 1 auf den jeweiligen Kopfsatz beziehen. Die Datensätze der Tabelle 2 kann ich so löschen. Wenn ich dann aber die Datenätze der Tabelle 1 löschen will (mit der oben beschriebenen fhd-Datei), dann kommt die Fehlermeldung: "Die Tabelle 1 kann nicht abgeschnitten werden, da eine Foreign Key-Einschränkung auf sie verweist". Direkt auf der MS-SQL Datenbank kann ich die Datensätze jedoch löschen.

Können Sie da weiterhelfen?

Vielen Dank!
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Instert in sql-Datenbank mit Löschen 5 Jahre 7 Monate her #394

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Als Fehler würde ich das nicht ansehen, das ist by Design so vorgesehen. Das Problem ist dass wenn auf der WRITE Seite keine Daten ankommen auch nichts weiter durchgeführt wird u.a. wird auch die Tabelle nicht geleert. Ich werde die Verarbeitungsweise in dieser Hinsicht mal überdenken und ggf. ändern.

Zu Ihrer 2. Frage) Das ist ein Problem der Version 1.x Hier werden Tabellen aus Performance Gründen nicht mit dem SQL Befehl "delete from Ihre_Tabelle" geleert sondern mit "truncate Ihre_Tabelle" abgeschnitten.

In Version 2.x wurde das Umgestellt, so dass hier wieder delete verwendete wird. Über die Adapter Eigenschaft "UseTruncate = true" kann das auch wieder auf TRUNCATE umgestellt werden.

Workaround für Version 1.x: Ziehen Sie einen .NET Script Heater in irgendeine bestehende Verbindung und Kopieren folgenden Code hinein.
public object DoWork()
{
  // nicht im Testmodus ausführen
  if (AdapterWrite.OnlyTest == false)
    AdapterWrite.Execute("delete from IhreTabelle_BITTE_Anpassen");

  return InValues[0].GetValue();
}
Passen Sie im Skript den Tabellennamen an, so dass Ihre gewünschte Tabelle geleert wird. Danach müssen Sie noch auf der WRITE Seite die Option "Tabelle vor dem Import Leeren" wieder deaktivieren.
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.081 Sekunden