Mehr

Importieren von Daten aus einer CSV-Datei in eine vorhandene Tabelle cartodb

Importieren von Daten aus einer CSV-Datei in eine vorhandene Tabelle cartodb


Ich versuche, einer vorhandenen CartoDB-Tabelle Daten aus einer lokalen CSV-Datei hinzuzufügen. Mit der Import-API wird eine neue Tabelle erstellt. Wie kann ich angeben, dass Daten zu einer vorhandenen Tabelle anstelle einer neuen Tabelle hinzugefügt werden sollen?


Anscheinend erlauben Standardtabellen in CartoDB das Anhängen von Zeilen an vorhandene Tabellen nicht. Wenn du dir das ansiehst API es gibt einen append-Parameter, aber er sagt, dass er "für zukünftige Verwendung reserviert" ist.

Ich habe jedoch gefunden dieser Thread Dies bedeutet, dass Sie mit SQL importieren können, sofern die Schemas übereinstimmen.

Wie so:

INSERT INTO mastertable SELECT * FROM anewtable

Postges: psql csv-Import schlägt fehl, obwohl Datei vorhanden ist

Der häufigste Grund für das Fehlschlagen von COPY ist der im Hinweis vorgeschlagene Fehler, aber dann ist der Fehler eine "Berechtigung verweigert".

Da Sie "No such file or directory" erhalten und ein einfaches ls anzeigt, dass die Datei existiert, gibt es zunächst ein paar plausible Erklärungen, die Sie überprüfen möchten:

/home/centos/bugs.csv ist ein Softlink, der auf eine nicht vorhandene Datei verweist. Verwenden Sie ls -l, um sicherzustellen, dass das Ziel ein Softlink ist.

127.0.0.1:5432 wird auf Netzwerkebene auf einen anderen Computer umgeleitet. Diese Technik wird häufig verwendet, um eine Verbindung zu Remote-Diensten über SSH-Tunnel.

Ihr Betriebssystem verwendet ausgefallene Sicherheits-/Isolationsfunktionen, die Postgres verbieten, /home/centos/bugs.csv zu lesen, ohne ein a . auszugeben Zugang verweigert Error. Versuchen Sie ls -l /home/centos/bugs.csv unter dem Postgres-OS-Konto.

Ihr Server und Ihr Client laufen nicht unter demselben MOUNT-Namespace, wegen der Containerisierung.

In den Fällen #2, #3 oder #4 verwenden Sie einfach copy, wie im HINT-Teil der Fehlermeldung vorgeschlagen.


Importieren von CSV-Dateien in SQL Server

Windows PowerShell bietet integrierte Unterstützung für das Erstellen von CSV-Dateien mithilfe der Exportieren-CSV Cmdlet. Die Erstellung einer CSV-Datei ist jedoch meist nur ein kurzer Zwischenstopp in einem Gesamtprozess, der das Laden der Datei in ein anderes System beinhaltet. In diesem Beitrag betrachten wir einige skriptbasierte Ansätze zum Importieren von CSV-Daten in SQL Server. HinweisHinweis: SQL Server enthält eine Komponente speziell für die Datenmigration namens SQL Server Integration Services (SSIS), die den Rahmen dieses Artikels sprengen würde.


Salesforce bietet hierfür gebrauchsfertige Tools. Um Daten aus einer externen CSV-Datei (Comma Separated Value) in Salesforce zu importieren, müssen Sie das Salesforce-Objekt (entspricht einer Tabelle in einem RDMS, aber noch viel mehr) und die Felder des Objekts (entspricht Spalten) kennen einer Tabelle), an die Sie diese Daten senden möchten.

Ich gehe davon aus, dass die Gesamtzahl der Datensätze, die Sie importieren möchten, weniger als 50.000 beträgt. Dies sind die 3 am häufigsten verwendeten Tools, die Sie hier verwenden können und die keine zusätzlichen Kosten verursachen.

Datenimport-Assistent - Sie können auf dieses Tool zugreifen, indem Sie sich bei Ihrer Salesforce-Instanz anmelden und zu . navigieren Setup > Datenimport-Assistent. Dies ist auf den Import von maximal 50.000 Datensätzen beschränkt. Unter folgendem Link finden Sie die Besonderheiten des Imports von Datensätzen in Salesforce mit dieser Methode – Importieren von Daten mit dem Datenimport-Assistenten.

Datenlader - Data Loader ist eine Clientanwendung, die zum Importieren von Massendaten und zum Ausführen von DML-Vorgängen an den Salesforce-Daten verwendet wird. Dieses Tool muss lokal auf Ihrem Computer installiert werden, bevor Sie es verwenden können. Dieses Dienstprogramm ist praktisch, wenn Sie Datensätze mit einer Anzahl von mehr als 50.000 einfügen oder bearbeiten möchten. Klicken Sie auf den folgenden Link, um die Besonderheiten der Installation und des anschließenden Imports von Datensätzen in Salesforce mit dieser Methode zu erfahren – Data Loader

Werkbank - Externes Dienstprogramm, das über das Web verfügbar ist und häufig von Salesforce-Administratoren und -Entwicklern verwendet wird, jedoch nicht im Besitz von Salesforce selbst ist oder von Salesforce selbst verwaltet wird. Melden Sie sich beim Dienstprogramm mit den Anmeldeinformationen für die Salesforce-Instanz an, in die die Datensätze importiert werden müssen. Navigieren Sie zu Daten > Einfügen innerhalb der Workbench und befolgen Sie die entsprechenden Schritte. Rufen Sie den folgenden Link auf, um auf Workbench - Workbench zuzugreifen.


1 Antwort 1

Sie können Powershell verwenden, um große CSV-Dateien schnell in einen SQL-Server zu importieren. Dieses Skript Hochleistungstechniken zum Importieren von CSV in SQL Server mit PowerShell - von Chrissy LeMaire (Autor von dbatools)

Unten ist der erreichte Benchmark:

5,35 Millionen Zeilen pro Minute für nicht indizierte Tabellen und

4,35 Millionen Zeilen pro Minute für Tabellen mit Clustered-Indizes.

Das Skript stapelt Ihren Import sogar in 50.000 Zeilen, damit es während des Imports nicht den Speicher beansprucht.


Das csvsimple-Handbuch beschreibt es. Dies ist ein modifiziertes Beispiel aus dem Handbuch.

Wenn Ihre Kopfzeile Leerzeichen enthält, können Sie keine Kopfzeilennamen verwenden. Sie können also csvcoli usw. verwenden. Hier ein kurzes Beispiel

Sie können pgfplotstable oder datatool verwenden, von denen ich denke, dass csvsimple stammt. Hier ist ein Beispiel mit pgfplotstable mit Standardeinstellungen.

Mit dem Dienst http://www.tablesgenerator.com/ können Sie latexbasierte Tabellen in einer GUI erstellen und dann den Code exportieren. Sie können auch eine CSV-Datei hochladen und diese automatisch konvertieren

Eine alternative Möglichkeit besteht darin, die CSV-Datei programmgesteuert zu ändern, um eine LaTeX-Tabelle mit dem folgenden Shell-Code zu erstellen. Dies gibt Ihnen die vollständige Kontrolle über die Formatierung der Abschlusstabelle und erfordert keine zusätzlichen Pakete. Der Vorbehalt ist, dass einige der Ersetzungen sorgfältig durchgeführt werden müssen, um eine Änderung des Inhalts der Tabelle zu vermeiden. Im Allgemeinen finde ich, dass tsv für diese Art von Problemen widerstandsfähiger ist, da Tabellenfelder selten enthalten, aber möglicherweise , enthalten.

Beachten Sie, dass die tatsächliche von ed eingefügte LaTeX-Syntax für Ihre spezifische Tabelle geändert werden muss


7 Antworten 7

Ich habe diese Lösung bei SQLTeam.com erhalten:

Mit dieser Methode konnte ich alle Daten ohne Probleme importieren.

Ich habe eine exakte Kopie einer Datenbank auf meinem Computer von einem Server erstellt, den ich nicht kontrolliert habe.

ich bin ein schmuck, aber das habe ich gemacht:

Die DB aus meinem Skript erstellt, das sich in der Quellcodeverwaltung befand (Hinweis, Hinweis!). Wenn Sie das Skript nicht haben, können Sie es jederzeit über die Option Tasks aus der vorhandenen DB generieren.

Wenn Daten automatisch eingefügt wurden in IhreDB Führen Sie bei der Erstellung ein DELETE FROM YourDB.dbo.tblYourTable aus.

Führen Sie dies auf Ihrem Zielserver aus: USE YourDB EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT alle'

Rechtsklick auf IhreDB im Objekt-Explorer. Klicken Sie auf Aufgaben -> Daten importieren.

Die ersten Bildschirme des Assistenten sind selbsterklärend.

Klicken Sie im Bildschirm „Quelltabelle und -ansichten auswählen“ des Assistenten auf das Kontrollkästchen neben jeder Tabelle, die Sie kopieren möchten.

Klicken Sie für jede Zeile (Tabelle) auf diesem Bildschirm darauf, sodass sie hervorgehoben wird, und klicken Sie dann auf Zuordnungen bearbeiten .

Klicken/aktivieren Sie für jede Zeile (Tabelle) Zeilen an die Zieltabelle anhängen und Identitätseinfügung aktivieren .

  • Wenn Sie auf Zeilen in der Zieltabelle löschen klicken, schlägt dies fehl, da kein DELETE-Befehl ausgegeben wird, sondern ein TRUNCATE-Befehl, der immer noch mit unseren Fremdschlüsseln in Konflikt steht, da TRUNCATE nicht von der NOCHECK CONSTRAINT von früher geregelt wird.

Klicken Sie sich durch den Rest des Assistenten und klicken Sie auf Fertig stellen.

Achten Sie auf Fehler Warnungen sind wahrscheinlich in Ordnung zu ignorieren.

  • Wenn Fehler auftreten, klicken Sie auf die Schaltfläche Bericht und zeigen Sie den Bericht an. Versuchen Sie herauszufinden, was Erfolg, Fehler und Gestoppt war. Sie müssen wahrscheinlich die Ursache des Fehlers beheben, der irgendwo in diesem Bericht vergraben ist. Dann müssen Sie wahrscheinlich DELETE FROM YourDB.dbo.theErrorTable durchführen. Klicken Sie nun im Importassistenten auf die Schaltfläche Zurück und deaktivieren Sie jede Tabelle, die erfolgreich war. Bis ins Unendliche wiederholen.

Führen Sie dies auf Ihrem Zielserver aus: USE YourDB EXEC sp_msforeachtable 'ALTER TABLE ? MIT CHECK CHECK CONSTRAINT all'

Vielen Dank an alle, die diese Frage und ähnliche Fragen im SE-Netzwerk beantworten, die mir geholfen haben, dies herauszufinden.

Im Importassistenten können Sie zuerst die Zeilen löschen und wenn Sie über Identitätsfelder verfügen, können Sie das Einfügen der Identität wie unten beschrieben aktivieren

Wenn Sie die Überprüfungseinschränkung deaktivieren möchten, speichern Sie das Paket, wenn Sie vom Assistenten aufgefordert werden, das Paket zu speichern, und bearbeiten Sie dann den Verbindungs-Manager wie folgt:

Anmerkung: Sie können die Tabelle nicht KÜRZEN, wenn Fremdschlüssel definiert sind.

Lassen Sie die Einschränkungen nicht fallen.

Sie sollten das vom Assistenten erstellte SSIS-Paket speichern und dann in BIDS/SSDT bearbeiten. Wenn Sie das Paket bearbeiten, können Sie die Reihenfolge steuern, in der die Tabellen verarbeitet werden, sodass Sie die übergeordneten Tabellen und dann die untergeordneten Tabellen verarbeiten können, wenn alle übergeordneten Tabellen fertig sind.

Probleme wie dieses zeigen uns, dass die Leute, die SQL Server machen, ihr Produkt nie wirklich benutzt haben. Dies ist eine so eklatante Unterlassung, dass man sich fragen muss, was sie sonst einfach vergessen haben, richtig zu machen (ich habe eine Liste von ungefähr 30 anderen nervigen Problemen wie diesem, die ich überwinden musste, damit dies so funktioniert wie andere DBs der Box einschließlich der Tatsache, dass wir überhaupt einen lausigen Assistenten brauchen, um dies zu tun [wenn ich die Zeit hätte, auf diesen Assistenten zu warten, um sich zu verbinden und die gleichen Tabellen für dieselbe DB jedes Mal wieder aufzuzählen. Ich hätte Zeit für einen schönen Urlaub]).

Ich bin sehr faul und möchte nicht EXEC sp_msforeachtable eingeben. zweimal jedes Mal, wenn ich dies tue. Meine Umgehung bestand darin, die Einschränkungen auf dem Produktionsserver zu belassen und sie vom Entwicklungsserver zu entfernen. Dies verhindert den Fehler, aber diese Methode hat einige SEHR GROSSE Nebenwirkungen. Erstens können Sie nicht mehr einfach eine vollständige Sicherung auf Ihrem Entwicklungsserver wiederherstellen (es sei denn, Sie sind damit einverstanden, sie alle wieder zu entfernen). Zweitens funktioniert dies am besten, wenn Sie sicher sind, dass die Verbraucher Ihrer Daten diese Einschränkungen auch durchsetzen (oder sich nicht um sie kümmern). In meinem Fall haben wir nur einen Verbraucher (unsere Website), daher haben wir diese Einschränkungen auch in den Site-Code integriert (dh bevor wir einen Benutzerdatensatz löschen, löschen wir zuerst alle Telefondatensätze für diesen Benutzer). Ja, dies macht von vornherein die Notwendigkeit von Einschränkungen überflüssig und verdoppelt die Arbeit, die ich tun muss, aber es gibt mir auch die Möglichkeit zu überprüfen, ob mein Code mit oder ohne DBMS-basierte Einschränkungen funktioniert (Tatsache ist, dass sie immer noch aktiviert sind .) prod-Server nur als Notfallplan). Sie könnten dies als Fehler in meinem Design bezeichnen, aber ich würde es eher als Problemumgehung für ein fehlerhaftes DBMS bezeichnen. Auf jeden Fall geht dies immer noch schneller und einfacher als aus MSSQL heraus, da es mit seinem eigenen Design nicht zurechtkommt.


Hinweis: Ich erhalte eine kristallklare Erklärung der benutzerdefinierten Importoption von diesem Link

Bitte laden Sie zuerst die gesamte ZIP-Datei von diesem Github-Link herunter und ändern Sie dann den Modulnamen gemäß Ihren Anforderungen. Ändern Sie einfach die beiden Dateien, um Ihre benutzerdefinierte CSV-Datei in eine benutzerdefinierte Tabelle zu importieren.

Schritt 1: ändern app/code/vendor/module_name/etc/import.xml aus Ihrem Download-Github-Ordner.

Schritt 2: dann sollten Sie die Modellklasse gemäß der Erwähnung in der obigen import.xml erstellen müssen

app/code/vendor/module_name/Model/Import/CustomerGroup.php

Das ist es, für Klarheit in Bezug auf diese Antwort bitte im Kommentar erwähnen.

@Atish Goshwami Antwort auch richtig, Warum aktualisiere ich? denn mit meiner Art konnte ich innerhalb von zwanzig Minuten ein Ergebnis erzielen, das ist einfach.


2.4. Einschränkungen des Bulk-/Delta-Verhaltens

Die Existenz und Verwaltung eines Datensatzes wird über die Massen- und Deltaverarbeitungsoptionen gesteuert. Ein Datensatz kann in vier möglichen Zuständen vorliegen:

&bull 'No Record' - der Datensatz wurde nicht erstellt oder existierte, aber das System hat den Datensatz gelöscht und kann mit der zuvor zugewiesenen sourcedId nicht wiederhergestellt werden

&bull 'Record[-]' - der Datensatz wurde erstellt und ihm eine sourcedId zugewiesen, aber er wurde noch nicht aktiviert

&bull 'Record[Active]' - der Datensatzstatus wurde auf 'Active' . gesetzt

&bull 'Record[ToBeDeleted]' - der Datensatzstatus wurde auf 'tobedeleted' gesetzt.

Für jeden Zustand gibt es vier mögliche Typen von Übergangsereignissen:

&bull 'B[-]' - eine Massenübertragung hat stattgefunden und ein vorhandener Datensatz (einer mit einer sourcedId) erscheint nicht in diesen Dateien

&bull 'B[S]' - eine Massenübertragung ist aufgetreten und der Datensatz erfolgt im neuen Dateisatz

&bull 'D[A]' - eine Deltaübertragung ist aufgetreten und der Datensatzstatus wird auf "aktiv" gesetzt

&bull 'D[D]' - eine Deltaübertragung ist aufgetreten und der Datensatzstatus wird auf 'tobedeleted' gesetzt.

Der Übergang 'System löscht den Datensatz' ist nur möglich, wenn sich der Datensatz im Status 'Record[ToBeDeleted]' befindet. Für diesen Übergang löscht das System den Datensatz (die Zeitspanne zwischen dieser Löschaktion und dem Setzen des Datensatzes als 'tobedeleted' ist von der Implementierung abhängig).

Das Zustandsdiagramm für die Erstellung und Verwaltung eines Datensatzes in einem Dienstanbieter ist in Abbildung 2.1 dargestellt.

Abbildung 2.1 - Zustandsdiagramm für die Verwaltung von Datensätzen mittels Massen-/Delta-Verarbeitung beim Dienstleister.

Ein OneRoster-Dienstnutzer könnte in jedem dieser vier Zustände eine 'HTTP GET'-Anforderung für den Datensatz ausgeben. Wenn eine solche Leseanforderung gestellt wird, führt die Anforderung zu den folgenden Nutzlasten:

&bull 'Record[-]' - der Datensatz wird mit einem leeren Feld 'Status' und einem leeren Feld 'dateLastModified' zurückgegeben

&bull 'Record[Active]' - der Datensatz wird mit einem 'status'-Feldwert von 'active' zurückgegeben und das Feld 'dateLastModified' wird auf den Zeitpunkt der letzten Änderung des Datensatzes gesetzt

&bull 'Record[ToBeDeleted]' – der Datensatz wird mit einem 'status'-Feldwert von 'tobedeleted' zurückgegeben und das Feld 'dateLastModified' wird auf den Zeitpunkt der letzten Änderung des Datensatzes gesetzt.


Data Loader kann dies nicht implizit verarbeiten, da kein logischer Pfad vorhanden ist. Falls Ihre zu importierende Data Loader-CSV-Datei Kommas für den Feldinhalt enthält, müssen Sie den Inhalt in doppelte Anführungszeichen " " einschließen. Data Loader kann dies verarbeiten.

Wenn Sie die Import-CSV-Datei in Excel erstellen, werden die Anführungszeichen automatisch von Excel eingefügt, wenn in einer Zelle ein Komma erkannt wird. Wenn Sie die CSV-Datei in Excel speichern und in Notepad öffnen, werden die umschließenden Anführungszeichen für Zellen angezeigt, die Kommas enthalten.


Schau das Video: Excel 2016 - Import dat ze souboru.txt