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: Dynamischer Export von SQLServer nach SQLite

Dynamischer Export von SQLServer nach SQLite 4 Jahre 2 Wochen her #1136

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo,

Nach einiger Suche zum Thema SQL Server Daten in SQLite Datenbanken exportieren bin ich auf Ihr Produkt gestoßen.

Nach dem ersten Blick auf die Freeware Version macht der Flowheater einen guten Eindruck.

Allerdings finde ich in den Beispielen nichts, was auf unser spezielles Problem passt.

Kurz zur Erklärung, worum es geht
Wir haben eine SQL Server DB mit Daten für unseren Außendienst (Adressen, Artikel, ...)

Diese müssen, zeitgesteuert, für die ADMs in SQLite-Dateien exportiert werden.

Das sieht nach einem Fall für die Batch-Komponente aus.

Die Frage ist jetzt, ob ich Parameter, die an eine View übergeben werden, an den Batchaufruf hängen kann?

Beispielsweise:

FHBatch.exe d:\Adressen.fhd /Gebiet

Gebiet wäre dabei ein Zahlenwert von 1 bis 20

Wobei Gebiet in der Definition als Parameter für die View mit den Adressen verwendet wird (SELECT * FROM Adressen WHERE Gebiet = @Gebiet).

Und auch als Parameter für das Ausgabeverzeichnis dient (fülle die existierende adressen.db3 im Verzeichnis d:\daten\gebiet)

Ich hoffe, die Frage ist einigermaßen verständlich.

Mit freundlichen Grüßen
H.P.Bruns
Anfrage per Email erhalten
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: Dynamischer Export von SQLServer nach SQLite 4 Jahre 2 Wochen her #1140

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Bruns,

über FlowHeater Paramater können Sie Ihr Vorhaben realisieren.

Parameter können Sie dem Batch Modul über die Option /SetParameter Name=Wert übergeben.

z.B.
FHBatch /SetParameter Gebiet=10 Export-SQLServer-nach-SQLite.fhd

Diesen Parameter können Sie dann für den SELECT auf der READ Seite als dynamischen Wert verwenden.

z.B.
SELECT * FROM Adressen WHERE Gebiet = $GEBIET$

Ist das Feld Gebiet als CHAR/NCHARbzw. VARCHAR/NVARCHAR angelegt müssen Sie folgenen SQL Select verwenden

SELECT * FROM Adressen WHERE Gebiet = '$GEBIET$'

So haben Sie schon mal das Abrufen der SQL-Server Daten dynamisiert.

Etwas schwieriger wird es auf der SQLite (WRITE) Seite. Hier werden Parameter (z.Zt.) noch nicht im Datenbank Namen unterstützt!

Um das zu automatisieren benötigen wir hier einen .NET Script Heater und folgendes kleine Skript.
// !!! ACHUTUNG !!!
// Option Ausführen bei auf START stellen
public object DoWork()
{
  // Hier den Pfad zu den den SQLite Datenbanken anpassen $GEBIET$ wird dabei ersetzt!
  string SQLite = @".\$GEBIET$\adressen.db3";

  // Zugriff SQLite Adapter der WRITE Seite
  DatabaseAdapter adapter = (DatabaseAdapter)AdapterWrite;

  // Aktuellen Wert des Parameters Gebiet holen
  string gebiet = (string)Parameter["Gebiet"].GetString();

  // Gebiet im SQLite Adapter ersetzen
  adapter.Database = SQLite.Replace("$GEBIET$", gebiet);

  return null;
}
Das Skript holt sich den übergebenen Parameter "Gebiet" und ersetzt den im SQLite Adapter angegebene Pfad zur SQLite Datenbank. Wenn Sie den Ausgabepfad ändern möchten, müssen Sie dies im Skript vornehmen (s. Kommentar im Skript).

Achtung: Im .NET Script Adapter müssen Sie die Option "Ausführen bei" auf "Start" stellen (s. Screenshot)!



In der Anlage habe ich Ihnen dazu ein kleines Beispiel erstellt. Hier verwende ich nicht den SQL-Server Adapter sondern den Access Adapter auf der Write Seite. Eine Access Datenbank liegt dem Beispiel bei.

Hinweis: Damit Sie die Definition über den Designer vernünftig Testen können sollten Sie sich den Parameter über den Designer Menüpunkt "Bearbeiten->Parameter" anlegen und einen Standardwert vorgeben.

Anhang export_sql_server_nach_sqlite.zip nicht gefunden

Anhang:
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: Dynamischer Export von SQLServer nach SQLite 4 Jahre 2 Wochen her #1141

  • Hans-Peter Bruns
  • Hans-Peter Brunss Avatar
  • Offline
  • New Member
  • Beiträge: 11
Hallo Herr Stark

Als erstes mal ein Danke für die schnelle Antwort.
Das mit dem Forum macht natürlich Sinn. ;)

Ich habe da aber noch Fragen.

1. Ich habe mein lokales Beispiel mal im Designer ausprobiert mit dem Parameter unter Bearbeiten funktioniert das prima.
Sobald ich aber den Parameterwert über SetParameter Gebiet=101 übergebe, bekomme ich den Fehler "Falsche Syntax in der Nähe von'=' "
Der Aufruf lautet wie folgt:
FHBatch.exe SetParameter Gebiet=101 D:\Projekte\dmdbm01\CP_Android\Jobs\hdb2db3.fhd

2. Muss ich zugeben, das ich aus der VB-Welt komme. Wie refernziere ich den den DatabaseAdapter unter VB

3. Gibt es eine Möglichkeit einer Debug-Ausgabe in eine Textdatei oder per MsgBox?

Vielen Dank

Hans-Peter Bruns
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Dynamischer Export von SQLServer nach SQLite 4 Jahre 2 Wochen her #1144

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Bruns,

zu 1) Sorry das war mein Fehler. Im ursprünglichen obigen Beispiel hatte ich den Slash (/) vor dem SetParameter vergessen. Das Beispiel wurde in der 1. Antwort korrogiert.

Hier nochmal die Richtige Syntax:
FHBatch.exe /SetParameter Gebiet=10 Export-SQLServer-nach-SQLite.fhd


Zu 2) hier das Skript Beispiel für VB.NET
' !!! ACHTUNG !!!
' Option Ausführen bei auf START stellen

Public Function DoWork() As Object

  Dim SQLite as String
  Dim gebiet as String
  Dim adapter as DatabaseAdapter

  ' Hier den Pfad zu den den SQLite Datenbanken anpassen $GEBIET$ wird dabei ersetzt!
  SQLite = ".\$GEBIET$\adressen.db3"

  ' Zugriff SQLite Adapter der WRITE Seite
  adapter = AdapterWrite

  ' Aktuellen Wert des Parameters Gebiet holen
  gebiet = Parameter("Gebiet").GetString()

  ' Gebiet im SQLite Adapter ersetzen
  adapter.Database = SQLite.Replace("$GEBIET$", gebiet)

End Function

Zu 3) Das steht momentan auf der ToDo Liste. Über das Batch Modul können Sie die Ausgaben über Ausgabeumleitung in eine Textdatei schreiben lassen.

Hier ein kleines Batch CMD Beispiel
@echo off

REM Hier ggf. den Installationspfad zur FHBatch.exe anpassen!
set FHBATCH="C:\Program Files\FlowHeater V2\BIN\FHBatch.exe"

REM Hier ggf. den Pfad für das LOG File ändern
set LOG=C:\Temp\FHBatch_log.txt


%FHBATCH%  /SetParameter Gebiet=1 export-sql-server-nach-sqlite.fhd  >> %LOG%
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.085 Sekunden