gelieferte Datenmenge aus Datenbank ermitteln/berechnen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von DrZwockel.

    gelieferte Datenmenge aus Datenbank ermitteln/berechnen

    Hallo VB-Gemeinde,

    ich habe gerade schon Tante "Google" befragt, aber leider nicht fündig geworden. Vielleicht ist mein Problem auch zu kompliziert oder gar nicht machenbar/lösbar???

    Ich habe folgendes Problem. Ich hole aus einer Oracle-Datenbank Zahlenwerte, die ich dann in eine Excel-Tabelle eintrage, und dies vielfach für mehrere tausend Zeilen. Jetzt würde ich gerne nach so einem abgeschlossenen Datenimport Wissen, wie viel Daten da so gekommen sind. Also nichte die Werte, sondern die gelieferten Byte/KByte/MByte ....

    Jetzt meine Frage: Ist das eigentlich realsierbar und wenn ja, in welche Richtung muss ich denken bzw. meine Programmierung ansetzen?

    Vielen Dank für Eure Unterstätzung ...



    Gruß vom Doc ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DrZwockel“ ()

    docs.oracle.com/cd/E15817_01/s…/adabas_datatype_conv.htm hier kannst du die Größe je nach Datentyp ansehen

    ​angenommen deine Tabelle hat 3 Spalten: zwei mal int2 und einmal single

    ​dann hast du pro Zeile 2*2 Byte für die 2 Integer und einmal 4 Byte für die single, also:
    ​2*2+4=8 Byte pro Zeile.

    ​die 8 Byte pro Zeile multiplizierst du jetzt mit der Anzahl der Zeilen. Angenommen du hast 1500 Zeilen sind das:
    ​8*1500 = 12000Byte was 11KiB entspricht (12000/1024=11)

    ​weißt du nicht die Datentypen der Werte die du da holst, musst du raten, schätzen (ich würde den größten Datentypen annehmen) oder fragen.

    Es ist zu beachten dass du daraus nicht die Größe deiner Exceldatei abschätzen kannst, denn Excel speichert pro Zelle tausende weitere Informationen und die Datei wird bestimmt 20 mal so groß wie das was du da gezogen hast.
    Hallo KBT,

    zunächst einmal vielen Dank für Deine Antwort.

    Ich erhalte nicht komplette Zeilen als Antwort, sondern max. 12 Zellen pro Zeile, die dann gefüllt werden.
    Demnach müsste ich ja davon ausgehen, dass ca. 1 Zeile (12 Zellen) 12 *2 Byte = 24 Byte benötigt würden, oder sehe ich da falsch?

    Die 24 Byte dann mal der abgerufenen Zeilen insgesamt ... 1000 Zeilen = 1000 * 24 Byte = 24.000 Byte = (24.000/1024 = 23,4 KByte).

    Oder????
    vorausgesetzt was auch immer du da bekommst ist auch nur 2 Byte groß (zum Beispiel ein normaler Integer, also eine Ganzzahl, keine Kommazahl), dann stimmt deine Berechnung

    ​noch als Hinweis: ich meine mit "Zeile" eine Reihe in einer Tabelle die du aus der Datenbank bekommst. Deine Zeile halt also 12 Spalten. Nicht gemeint ist damit die Horizontale Einheit von Excel, die ja 16,384 ​"Zellen" pro Excel-Zeile haben kann.
    Ich hoffe ehrlich gesagt niemand baut solche Datenbanktabellen.
    Hallo

    Wäre das nicht genau das was du suchst?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    DrZwockel schrieb:

    die empfangenen Bytes irgendwie abzufangen
    Hmm... abfangen... Man könnte sicherlich mithilfe von WireShark die empfangenen SQL Pakete mitsamt Größe in eine Logdatei schreiben, und dann von einer anderen Anwendung berechnen lassen.

    Wäre jedoch absoluter Overkill, neben dem, dass man überall Wireshark installieren müsste.

    Im Normalfall kennt man ja seine Tabellen.
    Also kann man mit relativ hoher Genauigkeit entweder die in der Datenbank gespeicherten, oder die im Programm geladenen Datenmengen berechnen.
    Zwischen den beiden kann es jedoch zu Diskrepanzen kommen, da ein Integer in .NET nicht unbedingt ein Integer in der Datenbank sein muss. Bei Strings wird es nochmal komplizierter, da z.B. C# UTF-16(2 + 2 Bytes) für Strings benutzt, eine Datenbank hingegen jedoch auf alles mögliche eingestellt sein kann.
    Darüber hinaus ist jedes DBMS anders darin, ob es seine Tabellengrößen kennt, oder nicht.
    Hallo Sascha,

    vielen Dank fpr den Tipp, den ich an unseren Datenbankadmin weitergeleitet habe. Da wir nur mit einem "Generaluser" auf die DB gehen, sollte die Überwachung der empfangenen Byte so ein Kinderspiel sein.

    Danke,

    Gruß vom Doc