1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Fehler in bcp

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von freshman, 7 Juli 2011.

  1. freshman

    freshman Datenbank-Guru

    Hall Gemeinde,
    hab da ne Abfrage, aber die funktioniert nicht, sehe den Fehler aber nicht

    DECLARE @cmdStr AS nvarchar(1000)
    SET @cmdStr = 'bcp ' +
    '"SELECT * FROM ArtNr ' +
    'queryout ' +
    '"c:\test.txt" ' +
    '-w -t"\t" -T -S ;'
    EXEC xp_cmdshell @cmdSTR

    Vielleicht sieht einer von Euch den Fehler?

    DANKE
    freshman
     
  2. ukulele

    ukulele Datenbank-Guru

    Ich hab keine Ahnung was bcp oder queryout ist aber ich zähle 5x ", ist das richtig?
     
  3. freshman

    freshman Datenbank-Guru

    bcp dient den Massenexport / Import...
    ja, 5x, das ist garantiert der Fehler.... sollte ja nicht ungerade sein... :)
     
  4. freshman

    freshman Datenbank-Guru

    Hab die Abfrage umgebaut, nun hab ich ein anderes Problem:

    xp_cmdshell
    'bcp "SELECT DocNum, DocDate, DocType, DocStatus,' +
    'Printed, CardCode, CardName, Address,' +
    'VATSum, DocCur, DocTotal, DiscSum, DiscPrcnt' +
    'FROM GTS.db.OPCH" queryout C:\test.txt -c -C{ACP} -T -t";" -r\n '

    Wenn ich diese Abfrage in eine Zeile schreibe, dann funktioniert das alles problemlos... aber wenn ich es so schreibe wie hier, dann bekomme ich den Fehler: "Incorrect syntax near '+'."

    Ich seh den Fehler nicht!!!????

    freshman
     
  5. ukulele

    ukulele Datenbank-Guru

    Keine " um den Pfad?
     
  6. freshman

    freshman Datenbank-Guru

    nein, warum?

    xp_cmdshell 'bcp "select TSTNR1, Firma, BEZEI2 from StListTest2.dbo.ITest" queryout C:\test.txt -c -T -t";" -r\n '

    funktioniert Fehlerfrei!
     
  7. ukulele

    ukulele Datenbank-Guru

    DiscPrcnt oder DiscPrint?
    Funktioniert denn:
    'bcp "SELECT DocNum, DocDate, DocType, DocStatus, Printed, CardCode, CardName, Address, VATSum, DocCur, DocTotal, DiscSum, DiscPrcnt FROM GTS.db.OPCH" queryout C:\test.txt -c -C{ACP} -T -t";" -r\n ' ohne die + Verkettung?
     
  8. freshman

    freshman Datenbank-Guru

    xp_cmdshell
    'bcp "select DocNum, DocDate, DocType, DocStatus, Printed, CardCode, CardName, Address, VATSum, DocCur, DocTotal, DiscSum, DiscPrcnt from GTS.db:confused:PCH" queryout C:\test.txt -c -C{ACP} -T -t";" -r\n '

    in eine Zeile geschrieben bringt mir das gewünschte Ergebnis... also muss ein Fehler in der Verkettung sein, aber ich weiss einfach nicht wo..
    klar, man kann alles in eine Zeile schreiben.. aber dann wird es ja auch unübersichtlich!
     
  9. ukulele

    ukulele Datenbank-Guru

    Ich kenne das von RAISERROR(), da lassen sich auch keine Texte im Aufruf verketten, nur mit vorherige Variable. Also z.B.

    DECLARE @asdf VARCHAR(255) = 'Hallo Welt'
    RAISERROR(@asdf,16,1)
    geht
    RAISERROR( 'Hallo Welt',16,1)
    geht
    RAISERROR( 'Hallo ' + 'Welt',16,1)
    geht nicht
     
    Walter gefällt das.
  10. freshman

    freshman Datenbank-Guru

    DANKE, das war der entscheidende Hinweis.. komischerweise klappt es nachdem man eine Variable deklariert hat.
    Gerne stelle ich das nun zu Verfügung... kann man ja mal gebrauchen.. EVTL :)

    DECLARE @cmdStr AS nvarchar (2000)
    SET @cmdStr = 'bcp ' +
    '"SELECT * FROM ' +
    'StListTest2.dbo.ITest INNER JOIN StListTest2.dbo.ArtNr ON ITest.TSTNR1 = ArtNr.Artikelnummer" ' +
    'queryout C:\str2.csv -c -C{ACP} -T -t";" -r\n'
    EXEC xp_cmdshell @cmdSTR

    und hier noch die Parameter für bcp

    -c = Führt den Vorgang mithilfe eines Zeichendatentyps aus
    -C{ACP} = Codepage (ACP = ANSI/Microsoft Windows) ()braucht man bei Umlauten usw)
    -T = Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt
    -t";" = Gibt das Feldabschlusszeichen an, hier ;.
    -r\n = (Neue-Zeile-Zeichen) als Zeilenabschlusszeichen
     
Die Seite wird geladen...

Diese Seite empfehlen