täglich aktualisierte Daten auslesen und speichern

freshman

SQL-Guru
Beiträge
100
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 :)
 
Werbung:
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
Werbung:
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
 
Zurück
Oben