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

String zusammen setzen BULK INSERT

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

  1. freshman

    freshman Datenbank-Guru

    Hallo Gemeinde, mal wieder eine Frage:
    Wenn ich die Spaltenbezeichnungen in der Antwort haben möchte, dann sieht die Abfrage ja so aus:

    SELECT 'TSTNR1', 'FIRMA' ,
    'BEZEI1-Komp', 'BEZEI2'
    UNION ALL
    SELECT TSTNR1, FIRMA,
    [BEZEI1-Komp], BEZEI2
    FROM StListTest2.dbo.ITest INNER JOIN StListTest2.dbo.ArtNr ON ITest.TSTNR1 = ArtNr.Artikelnummer

    funkioniert ja auch

    natürlich habe ich viel mehr Spalten, und muss mir dann für Nutzung BCP einen String bauen, damit nicht alles in einer Zeile steht. Das schaut dann so aus (mit viel weniger Spalten)..

    DECLARE @cmdStr AS nvarchar (2000)
    SET @cmdStr = 'bcp ' +
    '"SELECT 'TSTNR1', 'FIRMA', ' +
    ''BEZEI1-Komp', 'BEZEI2' ' +
    'UNION ALL ' +
    'SELECT TSTNR1, FIRMA ' +
    '[BEZEI1-Komp], BEZEI2 '
    '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

    Zur Identifikation, es gibt keine Anführungsstriche (ausser vor SELECT und nach Artikelnummer), alles sonst ist '

    Wo bau ich da den String falsch zusammen?

    DANKE
     
  2. ukulele

    ukulele Datenbank-Guru

    Überall wo der Text im SQL Editor die Farbe wechselt und es nicht sollte.

    Code:
    DECLARE @cmdStr AS nvarchar (2000)
    SET @cmdStr = 'bcp ' +
    '"SELECT TSTNR1, FIRMA, ' +
    'BEZEI1-Komp, BEZEI2 ' +
    'UNION ALL ' +
    'SELECT TSTNR1, FIRMA ' +
    'BEZEI1-Komp, BEZEI2 ' +
    '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
    Also eigentlich überall falsch.
     
  3. freshman

    freshman Datenbank-Guru

    mmmmmmhhhh... aber Spaltenüberschriften müssen doch
    'Spaltenename'
    formatiert werden, oder?
    Wenn ich das so mache, wie Du es schreibst, bekomme ich die Rückmeldung ""ungültiger Spaltenname!

    ?????????????
     
  4. ukulele

    ukulele Datenbank-Guru

    Also ' unterbricht normalerweise jeden String. In sofern kannst du das nicht in einen String einbauen ausser du suchst dir die CHAR() Nummer raus und verkettest das. Aber eigentlich brauchst du das nicht bzw. das 'spalte' verhindert sogar das es eine Spaltenüberschrift gibt. Ansonsten geht auch:

    spalte
    "spalte"
    [spalte]
    tabelle.spalte
    tabelle.[spalte]
    [tabelle].[spalte]
    "tabelle"."spalte"
    etc.

    Um einen Spaltennamen zu ändern kannst du spalte AS spaltenname machen.
     
  5. freshman

    freshman Datenbank-Guru

    Danke, aber nun hab ich es nicht ganz geschnallt... wie bekomme ich den Spaltennamen denn nun mit in meine csv Datei exportiert?
    nerve ich?? :)
     
  6. ukulele

    ukulele Datenbank-Guru

    Und jetzt versteh ich erst was dein Problem ist. Du brauchst ein Hochkomma im String, das geht per Doppel-Hochkomma ''. Abgesehn davon fehlt dir aber an anderer Stelle noch ein ' und ein +.

    Code:
    DECLARE @cmdStr AS nvarchar (2000)
    SET @cmdStr = 'bcp ' +
    '"SELECT ''TSTNR1'', ''FIRMA'', ' +
    '''BEZEI1-Komp'', ''BEZEI2'' ' +
    'UNION ALL ' +
    'SELECT TSTNR1, FIRMA ' +
    '[BEZEI1-Komp], BEZEI2 ' +
    '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
     
    freshman gefällt das.
  7. freshman

    freshman Datenbank-Guru

    merci, nun passt es :)
     
Die Seite wird geladen...

Diese Seite empfehlen