Dynamischer Export von SQLServer nach SQLite
- FlowHeater-Team
- Autor
- Offline
- Administrator
Weniger
Mehr
11 Jahre 11 Monate her #1136
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.
Dynamischer Export von SQLServer nach SQLite wurde erstellt von FlowHeater-Team
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
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Autor
- Offline
- Administrator
11 Jahre 11 Monate her #1140
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: Dynamischer Export von SQLServer nach SQLite
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.
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.
ü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.
Code:
// !!! 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;
}
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 wurde nicht gefunden.
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.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Hans-Peter Bruns
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 17
11 Jahre 11 Monate her #1141
von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Aw: Dynamischer Export von SQLServer nach SQLite
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 \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
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 \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
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Autor
- Offline
- Administrator
11 Jahre 11 Monate her #1144
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: Dynamischer Export von SQLServer nach SQLite
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
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
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
Code:
' !!! 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
Code:
@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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.278 Sekunden