AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

bcp als batchdatei

Ein Thema von TheMemo · begonnen am 13. Mär 2018 · letzter Beitrag vom 13. Mär 2018
Antwort Antwort
TheMemo

Registriert seit: 25. Jan 2011
3 Beiträge
 
#1

bcp als batchdatei

  Alt 13. Mär 2018, 16:19
Datenbank: MS SQL • Version: 2012 • Zugriff über: bcp
Hallo ich habe ein Problem mit der Ausführung eines Batchbefehles für bcp.

Der Datenbankname wird durch das eigentliche Programm teils automatisch angelegt:
DB_Name:durchMitarbeitervergebenerName+{F010E787-D376-43DC-A021-F1441EDB85A2}

Führe ich den Befehl direkt in der Shell aus, funtioniert er wunderbar:
Code:
bcp "SELECT FieldInfo.Account, LEN(FieldInfo.Account) AS LaengeAccount,Data.fact,Data.idLevel, Data.idTime, FieldInfo.FieldName FROM dbo.tbl_DataCube AS Data INNER JOIN dbo.tbl_FieldMember AS Fields ON Data.idField = Fields.idField INNER JOIN dbo.tbl_FieldMemberInfo AS FieldInfo ON Fields.idField = FieldInfo.idField WHERE (FieldInfo.Account LIKE N'001001%') AND (Data.idLevel = '3') AND (Data.idTime > '183')" queryout "\\Netzlaufwerk\Daten_Dummy.exp" -T -c -d durchMitarbeitervergebenerName+{F010E787-D376-43DC-A021-F1441EDB85A2}
Führe ich ihn als Batch aus, startet er den Kopiervorgang, kopiert aber 0 Zeilen und beendet die Ausführung ohne Fehlermeldung.
Die bestehende Datei auf dem Netzlaufwerk wird dabei auch durch eine leere ersetzt.

Ich habe versucht den DBNamen nochmal zu escapen (',''), aber dann beschwert er sich gleich, das die Datenbank nicht gefunden werden kann.

Vielleicht hat ja jemand von euch eine Idee.

Geändert von TheMemo (13. Mär 2018 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: bcp als batchdatei

  Alt 13. Mär 2018, 16:48
Kein Fehler oder nur keinen Fehler gesehn?

Notfalls einfach mal alle Wege und Werte überprüfen/speichern.
Code:
bcp "SELECT....  -e D:\Error.log -o D:\Output.log > D:\OutputMsg.log 2> D:\OutputErr.log
if errorlevel 1   echo %errorlevel% > D:\ErrorLevel.log
Zitat:
Ich habe versucht den DBNamen nochmal zu escapen (',''), aber
Wie?

Für einen halbwegs ordentlichen Kommandozeilenparser sollte xxx und "xxx" das Gleiche sein.
Bei xxx und x"xx" sieht es manchmal aber anders aus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
TheMemo

Registriert seit: 25. Jan 2011
3 Beiträge
 
#3

AW: bcp als batchdatei

  Alt 13. Mär 2018, 17:04
Vielen Dank schonmal für eine Antwort.

Den Escape Versuch habe ich mit einfachen 'DB_Name' und doppelten Hochkommata''DB_Name'' gemacht.
Anführungszeichen "DB_Name" werden auch korrekt erkannt, aber kein Unterschied im Verhalten (direkt in der Shell geht, über Batch nicht).

Das Output.log sagt:
"Kopiervorgang wird gestartet...

0 Zeilen kopiert.
NetzwerkpaketgrӇe (Bytes): 4096
Zeit (ms.) gesamt: 1"

Das error.log, OutputErr.log und OutputMsg.log bleiben leer und ein ErrorLevel.log wird nicht erstellt.

Geändert von TheMemo (13. Mär 2018 um 17:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: bcp als batchdatei

  Alt 13. Mär 2018, 17:39
Eventuell liegt es am SQL? Deine Zahlen sind als String im WHERE? Da kein Fehler kommt, trifft das WHERE wohl einfach nur nichts.
Auch schon ein einfaches SELECT * FROM irgendwas versucht?

Im Postgres hatte ich mal das Problem dass das Escapting der Strings in der Console etwas anders gemacht werden musste.
Und grade erst wurden da die Auto-Casts verändert, womit da die Statements auch nicht mehr "wie gewohnt" funktionierten.

Auto-Cast z.b. beim Vergleich von String und Integer oder Strings mit unterschiedlichen Codierungen oder ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: bcp als batchdatei

  Alt 13. Mär 2018, 17:51
Hallo,
also hier wird -S für den Server verwendet

https://social.msdn.microsoft.com/Fo...um=transactsql
Heiko
  Mit Zitat antworten Zitat
TheMemo

Registriert seit: 25. Jan 2011
3 Beiträge
 
#6

AW: bcp als batchdatei

  Alt 13. Mär 2018, 18:07
Eventuell liegt es am SQL? Deine Zahlen sind als String im WHERE? Da kein Fehler kommt, trifft das WHERE wohl einfach nur nichts.
Auch schon ein einfaches SELECT * FROM irgendwas versucht?

Im Postgres hatte ich mal das Problem dass das Escapting der Strings in der Console etwas anders gemacht werden musste.
Und grade erst wurden da die Auto-Casts verändert, womit da die Statements auch nicht mehr "wie gewohnt" funktionierten.

Auto-Cast z.b. beim Vergleich von String und Integer oder Strings mit unterschiedlichen Codierungen oder ...
Vielen Dank!
Es hat mich auf die richtige Lösung gebracht:

Code:
(FieldInfo.Account LIKE N'001001%%')
Prozentzeichen müssen gedoppelt werden.

Geändert von TheMemo (14. Mär 2018 um 10:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz