2017-05-10 2 views
0

Ich importiert und wird weiterhin Daten aus verschiedenen Quellen in SQL Server-Datenbank importieren. Eine logische Überprüfung wie die Summe einer Spalte sollte sich in 5 Dollar Differenz mit einem Betrag in einer anderen Tabelle befinden. Es ist schwer für mich, diese Logik beim Importieren zu überprüfen, da einige Daten manuell eingefügt werden, andere mit Excel VBA oder Python. Datengenauigkeit ist sehr wichtig für mich. Ich denke nach den eingegebenen Daten zu überprüfen. Ich denke dabei zwei MöglichkeitenDatenbank Daten Integritätsprüfung mit Python SqlAlchemy oder Sql Abfrage

  1. Python mit sqlalchemy und schreibe die Logik in Python
  2. SQL eine gespeicherte Prozedur oder direkt erstellen

zu überprüfen Was vs gespeicherte Prozedur Vor- und Nachteile von SQLAlchemy sein für Datencheck? oder andere Lösungen?

Der Nutzen in meinem Kopf für SQLAlchemy mit Automap:

  1. Mögliche Kombination Verwendung von Jupyter für schöne Benutzeroberfläche
  2. Logic ist einfacher zu schreiben, wie Schleife eine Tabelle jede Zeile Summe eines anderen sein sollte Tabelle mit einigen, wo Bedingungen.

Nutzen für gespeicherte SQL-Prozedur

  1. Können alle in SQL Server Management Studio verwaltet werden
+0

Wie die Frage geschrieben wird, ist es sehr nah am Thema für Stackoverflow zu sein, weil es sich auf unsere Meinungen konzentriert. Wenn Sie stattdessen die Vor- und Nachteile von SQLAlchemy vs gespeicherte Prozedur für Datenüberprüfungen fragen, wäre es eine bessere Frage. Es wäre noch besser, wenn Sie einige Beispiele für die Überprüfungen geben würden, an die Sie denken. –

Antwort

1

Die Antwort ist weder. Die meisten RDBMS verfügen über integrierte Mechanismen zum Erzwingen von Einschränkungen für die Daten, die in eine Zeile oder Spalte eingefügt werden. Wie Sie

sagte

Es ist schwer für mich, diese Logik zu überprüfen, wenn das Importieren, weil einige Daten manuell eingefügt werden, einige importierte mit Excel VBA oder Python. Daten Genauigkeit ist sehr wichtig für mich

Sie können nicht Ihren Code in all diesen Orten haben. Was funktioniert, ist constraints.

CHECK-Einschränkungen erzwingen die Domänenintegrität, indem sie die Werte begrenzen, die von einer oder mehreren Spalten akzeptiert werden. Sie können eine CHECK-Einschränkung mit jedem logischen (Boolean) Ausdruck erstellen,

WAHR oder FALSCH basierend auf den logischen Operatoren zurückgibt, kann man natürlich die Verwendung von gespeicherten Prozeduren für diese aber Einschränkungen sind effizienter, transparenter und leichter pflegen.

+0

Es gibt keine einfache Möglichkeit, "Constraints" zum Überqueren mehrerer Tabellen zu verwenden. Überprüfen Sie diese [link] (http://stackoverflow.com/questions/28172719/how-to-enforce-a-check-constraint-across-multiple-tables). Während der Dateneinfügung wird auch eine Logik unterbrochen und nicht angewendet. –

+0

Das ist nicht in Ihrer Frage erwähnt.Alles, was Sie mit Ihrer Programmiersprache machen, wird nicht narrensicher. – e4c5