Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αρχεία πάαααρα πολλών εγγραφών

Îåêßíçóå áðü ôï ìÝëïò arni. Τελευταία δημοσίευση από το μέλος arni στις 16-04-2010, 10:01. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-04-2010, 21:05 58125

    Αρχεία πάαααρα πολλών εγγραφών

    Normal 0 false false false EL X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:22.0pt; mso-bidi-font-size:11.0pt; font-family:"Arial Narrow","sans-serif"; mso-fareast-language:EN-US;}

    Καλησπέρα σε όλους

     

    Αγαπητοί φίλοι έχω βρεθεί σε ένα αδιέξοδο αλλά πιστεύω ότι κάποιος θα βοηθήσει.

     

    Εχω ένα τεράστιο αρχείο (περίπου 45.000.000 εγγραφές μέσα σε έναν ms-sql server 2005. Καταλαμβάνει ένα πίνακα πχ Table 1.

    Κανείς δεν πίστευε ότι το αρχείο αυτό θα χρησιμοποιούνταν ποτέ αλλά έφτασε ή ανάγκη χρήσης του μέσα από συγκεκριμένα queries. Μέχρι εδώ καλά.

    Ο πίνακας γεμίζει με περίπου 2.000.000 εγγραφές τον μήνα ως εξής: Έρχεται ένα μεγάλο .csv αρχείο από ένα σύστημα   το οπποίο εισάγεται σε μία βάση Ms-Access. Εκεί γίνονται τα ακόλουθα:

    1.       Το αρχείο δίνει ένα πεδίο text με την ημερομηνία και την ώρα σε μορφή 19/12/2009 15:31:45 το οποίο σπάω σε δύο, ημερομηνία και ώρα με την εντολή format ([Πεδίο];”dd/mm/yyyy”) για την ημερομηνία και αντίστοιχα και με την ώρα.

    2.       Όταν τελειώνει η χρήση του μηναίου αρχείου, γίνεται append μες από ένα query στον Sql Server και κρατιέται εκεί.  Ανοίγοντας  τον πίνακα βλέπω κανονικά το αρχείο με την εξής λεπτομέρεια: Η ημερομηνία και η ώρα πού είναι μια χαρά στον τοπικό πίνακα, μετατρέπεται σε πεδίο datetime και γίνεται της μορφής 19/12/2009 00:00 ενώ ή ώρα παίρνει την μορφή 31/12/1899 15:34:45.

    Το πρόβλημα είναι ότι ότα προσπαθώ να δημιουργήσω ένα query στον sql ή στο Visual studio 2008 της μορφής  select between and … μού κάνει το εξής parsing πού φαίνεται παρακάτω (δεν ξέρω γιατί κανει το convert(datetime)

    SELECT     TdateTime

    FROM         SampleData

    WHERE     (Tdate BETWEEN CONVERT(DATETIME, '2009-03-01 00:00:00', 102) AND CONVERT(DATETIME, '2009-03-15 00:00:00', 102))

    Και σε μικρό πίνακα μού φέρνει τα δεδομένα (περίπου 10.000 εγγραφών). Στον πραγματικό όμως , αφού κάνω το ίδιο query, περιμένω ώσπου να πα΄ρω το μήνυμα timeout expired.

     

    Τι δεν κάνω καλά; Είναι πρόβλημα της σύνταξης του query; Θέλει κάποια ρύθμιση ο sql για να μην κάνει timeout; Αν γνωρίζει κάποιος ας βοηθήσει…

     

    arni

  •  15-04-2010, 21:39 58127 σε απάντηση της 58125

    Απ: Αρχεία πάαααρα πολλών εγγραφών

    Καλησπέρα

    Εαν όλα αυτά τα κάνεις μέσα από τον SQL Server λογικά δεν θα έπρεπε να είχες πρόβλημα!

    Σε τι έκδοση SQL Server είσαι;

    Επίσης είσαι σίγουρος ότι δεν έχεις πειράξει εσυ ή κάποιος άλλος το query time-out στο SQL Server?

    Τέλος μήπως έχεις ορίσει query governor?

    Επίσης θα σου πρότεινα στο πίνακα αυτό να φτίάξει έναν index στο πεδίο αυτό και αν μπορείς να είναι και clustered αν φυσικά το βασικό σου κριτήριο αναζήτησης είναι η ημερομηνία

    Δώσε μας περισσότερες πληροφορίες αν μπορείς

    Φιλικά

     


    Antonios Chatzipavlis

  •  16-04-2010, 10:01 58133 σε απάντηση της 58127

    Απ: Αρχεία πάαααρα πολλών εγγραφών

    Αγαπητέ φίλε και συνάδελφε σε ευχαριστώ γιά τήν απάντηση και γιά το ότι ασχολήθηκες.
    Θά κοιτάξω όλα αυτά και θα επανέλθω.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems