Mehr

Kann bestimmte Tabellen nicht von SQL Server in QGIS importieren


Dies ist eine Liste von 193 Postleitzahlen und deren Geometrien, die nicht in QGIS importiert werden.

Dies ist eine Liste von 999 Volkszählungsblockgruppen und deren Geometrien, die in QGIS importiert werden.

Dies ist die Tabelle zum Hinzufügen von MSSQL-Ebenen in QGIS. Es zeigt, was die Tabelle anzeigt, wenn ich versuche, beide zu importieren.

Was würde dazu führen, dass eine Tabelle importiert werden kann, die andere jedoch nicht?

Ich habe dieses Problem, bei dem ich keine Shapefiles von SQL in QGIS importieren kann. Ich verwende Postleitzahlen in Florida als meine Formen. Ich habe eine Abfrage in SQL geschrieben, um mir bestimmte Postleitzahlen und deren Geometrien für bestimmte Landkreise in FL zu geben. Dies wurde in eine neue Tabelle in SQL eingefügt, die aus fast 200 Postleitzahlen besteht. Wenn ich versuche, dies in QGIS zu importieren, wird es nicht importiert. Die MSSQL-Importtabelle erlaubt mir nicht, diese Tabelle auszuwählen. Wenn ich jedoch die Abfrage so ändere, dass sie nur 20 Postleitzahlen enthält, kann ich die Tabelle auswählen und importieren. Hat QGIS also eine Begrenzung für die Anzahl der Formen, die importiert werden können? Ich habe andere Tabellen in SQL, die mehr als 1000 Formen haben und importiert werden, aber nicht diese von 200 Postleitzahlen.


Mir ist auch aufgefallen, dass QGIS bis zu meiner aktuellen Version (2.12.2) anscheinend ein Problem beim Laden von MSSQL-Geometrien vom Typ "GeometryCollection" hat, wenn Sie Polygone oder Multipolygone erwarten. Um zu überprüfen, ob Sie diese haben, verwenden Sie:

WÄHLEN SIE GEOM.STGeometryType() VON [Ihre Tabelle]

Ich benutze diese kostenlose Software, Spatial Data Manager.
Ich habe festgestellt, dass es die einzige kostenlose Software ist, die räumliche Daten direkt zwischen den wichtigsten RDBMS laden kann.
Sie können Ihre Daten während des Exportvorgangs filtern.


&ldquoMachen Sie im Code niemals das, was der SQL-Server für Sie gut machen kann&rdquo - Ist dies ein Rezept für ein schlechtes Design?

Es ist eine Idee, die ich an einigen Stellen wiederholt gehört habe. Einige mehr oder weniger anerkennen, dass, sobald der Versuch, ein Problem rein in SQL zu lösen, ein gewisses Maß an Komplexität überschreitet, Sie es tatsächlich in Code behandeln sollten.

Die Logik hinter der Idee ist, dass die Datenbank-Engine in den allermeisten Fällen die effizienteste Methode zum Erledigen Ihrer Aufgabe findet, als Sie dies im Code tun könnten. Vor allem, wenn es darum geht, die Ergebnisse von Operationen abhängig zu machen, die an den Daten durchgeführt werden. Mit modernen Engines wäre es wohl oberflächlich gesehen sinnvoll, die kompilierte Version Ihrer Abfrage mit JITing + Caching zu versehen.

Die Frage ist, ob die Nutzung Ihrer Datenbank-Engine auf diese Weise von Natur aus schlechte Entwurfspraxis ist (und warum). Die Linien verschwimmen weiter, wenn die gesamte Logik in der Datenbank vorhanden ist und Sie nur über ein ORM darauf zugreifen.


2 Antworten 2

Sie können dies absolut mit Tabellen sowie Powerpivot und Data Explorer tun. Die einfachste und derzeit bevorzugte Methode besteht darin, eine parametrisierte Abfrage in Excel zu erstellen. Verwenden Sie dazu den Abfrageassistenten und fügen Sie am Ende Einschränkungen für jeden Parameter hinzu, den Sie übergeben möchten. Anschließend können Sie die Verbindungseigenschaften bearbeiten und den zurückzugebenden Parameter als statischen Wert, Dialogfeld oder Tabellenkalkulationszelle zuweisen.

  1. Wählen Sie Ihre Datenquelle mit MS Query aus – dies ist erforderlich, um Parameter an SQL Data>Other Sources>Microsoft Query zurückgeben zu können.
  2. Wählen Sie Datenquelle , wählen Sie hier Ihre SQL-Datenquelle aus. Im Allgemeinen lasse ich alle diese Optionen leer, bis ich zum Fenster Fertigstellen komme, und wähle dann Daten anzeigen oder Abfrage bearbeiten in MS Query aus.
    • Hinweis: Normalerweise verarbeite ich die gewünschten Informationen aus SQL in einer einzigen Ansicht, mit der ich mich hier verbinden kann, aber Sie können im Allgemeinen jede select-Anweisung übergeben. Ich habe nicht versucht, eine gespeicherte Prozedur aufzurufen, daher bin ich mir nicht sicher, wie das funktionieren würde.
  3. Klicken Sie im MS-Abfragefenster auf die Schaltfläche Kriterien anzeigen/ausblenden und wählen Sie ein Kriterienfeld aus. Dies ruft Ihre Parameter auf, um sie an SQL zurückzugeben.
    • Beispiel: Wenn Sie ein Datumsfeld haben und es im Feld Kriterien auswählen, fügen Sie einen Wert zwischen [Start] und [Ende] hinzu. Dadurch wird ein Parameter erstellt und MS Query fordert Sie auf, beide Werte einzugeben und sofort den entsprechenden Datensatz zurückzugeben. Wenn Sie die erstellte SQL-Anweisung überprüfen, wird eine WHERE(datasource.date Between ? and ?)-Klausel hinzugefügt.
  4. Wählen Sie Datei>Daten an Excel zurückgeben und dann Tabelle auswählen.
  5. Damit die Tabelle Ihren Abfrageparameter automatisch abruft, wählen Sie eine Zelle in Ihrer Tabelle aus und gehen Sie zu Daten>Eigenschaften>Verbindungseigenschaften>Definition>Parameter.
  6. Für jeden Parameter können Sie wählen, ob er
    1. Aufforderung zur Angabe eines Wertes oder
    2. Verwenden Sie einen bestimmten Wert oder
    3. Rufen Sie einen Wert aus einer Tabellenkalkulationszelle ab, mit der Option, Ihre Tabellendaten automatisch zu aktualisieren, wenn sich dieser Zellenwert ändert.
      • Als zusätzliche Option können Sie die Datenvalidierung für die Zelle verwenden, die Sie für Ihren Parameter auswählen, wodurch Sie die möglichen Werte einschränken können, aus denen Sie auswählen können. Sie können die Validierungszellen sogar aus einer Tabelle beziehen, die aus Werten aus Ihrer Datenbank gespeist wird, um sicherzustellen, dass nur Werte ausgewählt werden können, die in der Datenbank enthalten sind.

    Ich erstelle oft eine Pivot-Tabelle basierend auf einer Tabelle, die aus einer parametrisierten Abfrage gespeist wird, um Werte für automatisch aktualisierte, bestimmte Datumsbereiche (z. B. vorherige 6 Monate) zurückzugeben.

    BEARBEITEN: Um mehrere Werte zur Verwendung in einer SQL IN-Klausel zurückzugeben, müssen Sie nur das Kriterienfenster im MS-Abfragefeld ändern. Wenn Sie beispielsweise den Feldnamen Land haben, wählen Sie ihn im Kriterienfeld aus, und geben Sie dann für Wert IN([Erster],[Zweiter],[Dritter]) ein. Wählen Sie Daten an Excel zurückgeben und MS Query fordert Sie auf, Werte manuell einzugeben. Sobald Sie wieder in Excel sind, können Sie die Parameter erneut ändern und auf drei Zellen in Ihrer Tabelle verweisen, von denen jede durch die Datenvalidierung eingeschränkt werden kann. Während die Anzahl der Parameter, die Sie auf diese Weise übergeben können, wahrscheinlich begrenzt ist, verarbeitet Excel problemlos drei, sodass ein paar mehr wahrscheinlich nicht in Frage kommen.


    Denken Sie daran, nach Bedarf -u $USER und -p$PASSWORD hinzuzufügen

    ich würde mir das mal anschauen Percona-Toolkit. Die Beschreibung des Tools pt-show-grants sagt alles.

    pt-show-grants extrahiert, bestellt und gibt dann Grants für MySQL-Benutzerkonten aus.

    Warum willst du das? Es gibt verschiedene Gründe.

    Die erste besteht darin, Benutzer einfach von einem Server auf einen anderen zu replizieren. Sie können einfach die Berechtigungen vom ersten Server extrahieren und die Ausgabe direkt an einen anderen Server weiterleiten.

    Die zweite Verwendung besteht darin, Ihre Grants der Versionskontrolle zu unterziehen.


    Datenbank von SQL Server 2012 nach 2008 verschieben 2012

    Ich habe eine Datenbank auf einer SQL Server 2012-Instanz, die ich auf einen Server 2008 kopieren möchte. Der Server 2008 kann keine Backups wiederherstellen, die von einem 2012-Server erstellt wurden (ich habe es versucht).

    Ich kann 2012 keine Optionen finden, um ein 2008-kompatibles Backup zu erstellen. Verpasse ich etwas?

    Gibt es eine einfache Möglichkeit, das Schema und die Daten in ein versionsunabhängiges Format zu exportieren, das ich dann in 2008 importieren kann?

    Die Datenbank verwendet keine 2012 spezifischen Funktionen. Es enthält Tabellen, Daten und gespeicherte Prozeduren.

    Das habe ich bisher versucht

    Ich habe es versucht Aufgaben &rarr Skripte generieren auf dem 2012-Server, und ich konnte das Schema (einschließlich gespeicherter Prozeduren) als SQL-Skript generieren. Dies beinhaltete jedoch keine der Daten.

    Nachdem ich dieses Schema auf meinem 2008-Computer erstellt hatte, konnte ich den Assistenten "Daten exportieren" auf dem 2012er-Computer öffnen, und nachdem ich den 2012 als Quellcomputer und den 2008 als Zielcomputer konfiguriert hatte, wurde mir eine Liste von Tabellen angezeigt, die ich kopieren könnte. Ich habe alle meine Tabellen (über 300) ausgewählt und mich durch den Assistenten geklickt. Leider verbringt es lange damit, seine Skripte zu generieren, und schlägt dann mit Fehlern wie "Fehler beim Einfügen in die schreibgeschützte Spalte 'FOO_ID'" fehl.

    Ich habe auch den "Copy Database Wizard" ausprobiert, der behauptete, "von 2000 oder später nach 2005 oder später" kopieren zu können. Es hat zwei Modi:

    "Detach and Attach", das mit Fehler fehlgeschlagen ist:

    SQL Management Object Method, die mit Fehler fehlgeschlagen ist

    Die Eigenschaft IsFileStream kann nicht gelesen werden. Diese Eigenschaft ist unter SQL Server 7.0 nicht verfügbar."


    Andere Komponenten

    Funktionsname Unternehmen Standard Netz Express mit erweiterten Services ausdrücken
    StreamInsight StreamInsight Premium-Edition StreamInsight Standard Edition StreamInsight Standard Edition Nein Nein
    StreamInsight HA StreamInsight Premium-Edition Nein Nein Nein Nein


    Schau das Video: GDAL Tutorial 278: Import shapefile in sql server (Oktober 2021).