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

täglich aktualisierte Daten auslesen und speichern

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von freshman, 4 November 2010.

  1. freshman

    freshman Datenbank-Guru

    Hallo Gemeinschaft,
    ich bin absoluter SQL Anfänger, daher entschuldigt bitte meine evt. trivialen Fragen. Ich arbeite schon seit längerem als Sysadmin, und da hat man natürlich immer wieder Berührungspunkte mit SQL Servern (überwiegend MS).
    Also kann ich auch (ein wenig??) die Abfragesprache, kann aber meinen Wissensstand selber schlecht beurteilen. Soviel zu mir, denke, das reicht erstmal :)

    Meine Anfrage:
    Ich habe eine Datenbank, in diese laufen (wie wohl fast überall) täglich neue Daten ein. Nun gibt es in dieser Datenbank eine Tabelle (ja, gibt viele, aber nur die eine interessiert mich derzeit!!).
    Aus dieser Tabelle möchte einmal alle Daten ziehen (es handelt sich um Verkaufszahlen), und diese in eine txt-Datei für Import in ein anderes System bereitstellen. Denke, das ist erstmal nicht so schwer, oder?? Nun will ich aber täglich eine weiter txt-Datei zur Verfügung stellen, die nur die NEUEN Verkaufszahlen beinhaltet. Da weiss ich nun einfach nicht, wie ich das angehen soll... durch vergleich mit der Erst erstellten Datei, oder wie geht man da vor?
    Anmerkung, die DB bekomme ich erst morgen zum testen, will mir nur jetzt schon einen Weg suchen!

    Danke Euch
    der neue FRESHMAN :)
     
  2. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Hallo freshman,

    musst du den Weg über die Textdatei gehen oder hast du auch Zugriff auf den anderen SQL-Server.

    Ich würde ein DTS-Paket erstellen um die Daten täglich zwischen den beiden Datenbanken synchron zu halten.

    Mit einem DTS-Paket kann man auch Daten in Textdateien exportieren und diese dann auf dem 2.ten Server importieren.

    Gruß Charly
     
  3. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Erstmal danke,
    aber ich muss den Weg einer txt- Datei gehen, die Dateien sollen in eine As400 importiert werden, mit einem veralteten IBM-Wawi System
    LEIDER
    sonst würde sich das alles ein wenig leichter gestalten, ich weiß!
    Ist das denn so kompliziert?

    Danke erstmal
    freshman
     
  4. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Ergänzung: es handelt sich um MS SQL Server 2005 Standard Edition
     
  5. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Hallo freshman,

    habe mein Kommentar gerade beim Thema 'Ringspeicher' reingestellt:D.

    So jetzt nochmal hier:

    schau dir mal das Programm 'bcp' an (hoffentlich in der Express Ed. vorhanden). Das Tool wird benutzt um Daten vom SQL-Server in eine Textdatei zu schreiben oder von dieser zu lesen.

    Hat deine Tabelle eine Datumsspalte? Sollte bei einer Tabelle mit Umsatzzahlen eigentlich der Fall sein.

    Wenn Ja, sagst du bcp in der SELECT das du nur Daten von Heute haben willst.

    Syntax für die Abfrage der heutigen Daten könnte so aussehen:

    Code:
     
    SELECT * FROM tabelle WHERE CONVERT (nvarchar , Datumsspalte , 102 )= CONVERT (nvarchar , Getdate()-1 , 102 )
    
    Gruß Charly
     
  6. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    oha, bcp
    kannte ich also noch gar nicht, hab nun mal ein wenig danach gegoogelt und muss sagen.. BOAH, mächtig.. EY, ich bin brutaler Anfänger :)
    Denke, mein Wochenende ist gerettet :)
    ich schau mir das mal an, wie man damit umgeht, und dann werde ich mich wieder melden... oder krieg ich einen schöne Beispieldatei?? :)
    Dann hätte meine Familie auch was am WE von mir (hoffe, ich erzeug nun Mitleid)

    DANKE
    freshman:D
     
  7. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Hallo freshman,

    sozusagen 'Zum Wochenende':D

    Code:
     
    EXEC xp_cmdshell 'bcp "select * from Northwind.dbo.Customers;" queryout "c:\employees.txt" -w -T -S server\instanz'
    
    So läuft es im Querry-Analyser und die Northwind hat ja jeder irgendwo rumliegen.

    Die Ausgabedatei wird auf dem Server erstellt!

    Der Parameter -S ist für die Serverinstanz
    Der Parameter -T ist für die integrierte Sicherheit und
    der Parameter -w damit man in der Ausgabedatei Unicode-Zeichen hat

    Gruß und schönes Wochenende

    Charly
     
  8. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    nabend,
    aber ist da nicht ein grober Fehler drin?
    ich bekomme immer Syntax Fehler, hab auch schon ein paar Varianten ausprobiert.. aber dann bekomm ich im Fehler.... in der Nähe von usw..
    Schaust bitte nochmal?

    DANKE

    freshman
     
  9. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    SORRY, Du hast alles richtig gemacht, nur ich hab was falsch gemacht..
    Schreibe gerade was in eine Datei, das sieht schon mal gut aus :)
    MERCI, auch im Namen meiner Familie :)

    freshman
     
  10. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    puh,

    und ich hab schon gedacht ich hab jetzt dein Wochenende mit Familie auf dem gewissen.:)

    Gruß Charly
     
  11. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    ne, hast Glück gehabt *lach
    schau mal bitte mein Post "Zeilenverbinder"
    ist doch bestimmt ne Kleinigkeit für Dich :)

    DANKE DIR
    freshman
     
  12. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Schau mal, so sieht mein Code aus:
    ___________________________________________________________
    SET @cmdStr = 'bcp ' +
    '"SELECT DocEntry, ' +
    'ItemCode, ' +
    'Dscription, ' +
    'Price, ' +
    'DiscPrcnt, ' +
    'LineTotal, ' +
    'DocDate ' +
    'FROM DBNAME.dbo.TABELLENNAME ' +
    'WHERE DocDate = 2002-12-30;" ' +
    'queryout ' +
    '"c:\test.txt" ' +
    '-w -t"| " -T -S;'

    --PRINT @cmdStr
    EXEC xp_cmdshell @cmdSTR
    ____________________________________________________________

    wenn ich die Anweisung ausführe, wird mir gemeldet (Meldungen), das 7 Zeilen der Where -Klausel entsprechen (hab mir auch alle anzeigen lassen, 7 Zeilen sind tatsächlich betroffen!!!).
    Mir wird aber nicht ein Datensatz in die txt-Datei geschrieben!
    Dummer Fehler?

    Danke für Korrektur
    freshman
     
  13. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Hallo freshman,

    ich sehe du hast gerade Spass mit Datumsformaten.:)

    Da ich die Tabelle nicht vor mir habe kann ich jetzt nur spekulieren.

    Normalerweise speichert SQL-Server das Datum im Datetime Format:

    2010-11-05 13:36:04.830

    Wenn du das mit 2010-11-05 vergleichst werden dir keine Zeilen zurückgegeben.
    Die Abfrage war allerdings erfolgreich (Jedenfalls für die Datenbank).
    Die DB denkt nämlich du willst mit 2010-11-05 00:00:00 000 vergleichen.

    Du kanst ja mal sowas für deine WHERE-Klausel probieren:

    Code:
     
    WHERE CONVERT (char, DocDate,104) = '05.11.2010'
    
    Gruß Charly
     
  14. freshman

    freshman Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    So ungefähr schaut es nun aus, bekomme aber Syntax Fehler in der Nähe von '30.12.' () sagt mir das Ergebniss!
    Passt da was nicht den vielen ' ' ' oder ????

    SET @cmdStr = 'bcp ' +
    '"SELECT DocEntry, ' +
    'ItemCode, ' +
    'Dscription, ' +
    'Price, ' +
    'DiscPrcnt, ' +
    'LineTotal, ' +
    'DocDate ' +
    'FROM DBNAME.dbo.TABELLENNAME ' +
    'WHERE CONVERT (char, DocDate, 104) = '30.12.2002' ;" ' +
    'queryout ' +
    '"c:\test.txt" ' +
    '-w -t"| " -T -S;'

    (Anmerkung, natürlich hab ich selber schon geschaut und probiert usw. aber ich weiss es wirklich nicht, was da falsch ist, komme auch nicht drauf)

    DANKE
    Freshman
     
  15. Charly

    Charly Datenbank-Guru

    AW: täglich aktualisierte Daten auslesen und speichern

    Hallo freshman,

    für SQL hört der String nach dem =-Zeichen auf dann kommt ein Teil mit dem SQL nichts anfangen kann. Du muss dass ' (Hochkomma) mit weiteren Hochkommata maskieren. Das hatte ich in meinem Beispiel nicht berücksichtigt.

    also so:

    Code:
    SET @cmdStr = 'bcp ' + 
    '"SELECT DocEntry, ' + 
    'ItemCode, ' + 
    'Dscription, ' + 
    'Price, ' +
    'DiscPrcnt, ' + 
    'LineTotal, ' +
    'DocDate ' +
    'FROM DBNAME.dbo.TABELLENNAME ' +
    'WHERE CONVERT (char, DocDate, 104) = ''30.12.2002'' ;" ' +
    'queryout ' + 
    '"c:\test.txt" ' + 
    '-w -t"| " -T -S;'
     
    
    Wenn es 2 Hochkommata nicht tun dann versuchs mal mit 3. Ich bin mir nicht 100% sicher und habe gerade kein System zum testen da.

    Gruß Charly
     
Die Seite wird geladen...
Ähnliche Themen
  1. SQL_Dummie
    Antworten:
    9
    Aufrufe:
    497

Diese Seite empfehlen