Wie kann ich CSV-Dateien automatisch in SQL Server importieren?

812
Odinson

Mein Ziel

  • Automatisierte Aggregation von Daten, sodass ich ein Tool (Microsoft Power BI oder ein gleichwertiges Werkzeug) verwenden kann, um Dashboards und / oder Berichte automatisch mit den neuen Daten zu aktualisieren.

Die Situation

Ich arbeite mit einem LMS, das nur zwei Optionen zum Abrufen von Daten aus seiner Datenbank zulässt:

  • Berichte manuell herunterladen

oder

  • Planen Sie diese Berichte per E-Mail.

Wir möchten in der Lage sein, einen bestimmten Datensatz zu betrachten, haben jedoch nicht die Zeit, all diese Daten manuell zu bereinigen und zu aggregieren, wenn wir sie benötigen.

Ich möchte verstehen, ob ich die CSV-Dateien entweder per E-Mail an eine Datenbank senden und automatisch importieren lassen kann (ich glaube nicht, dass dies möglich ist), oder ob eine Datenbank neue Dateien automatisch in einen Ordner importiert.

Was ich habe

  • Berichte, die mit den Daten erstellt wurden, die wir benötigen
    • Nur nicht in dem Format, das wir wollen

Was ich nicht habe

  • Backend-Zugriff auf die LMS-Datenbank

Es ist wahrscheinlich, dass dies ein SQL Server ist, der verwendet werden könnte, es ist möglich.

1
Suchen Sie nach einer dedizierten VM oder Workstation usw., die Sie der Automatisierung des manuellen Herunterladens widmen können, und verwenden Sie AutoIT, um ein Skript zu erstellen, das die Bewegung über den Webbrowser usw. ausführt, wenn dies manuell geschieht, indem die entsprechenden Mausklicks und emuliert werden Bewegungen und die Tastenanschläge auf der Tastatur. Anschließend standardisieren und automatisieren Sie das Kopieren dieser Dateien und importieren dann möglicherweise mit BCP- oder TSQL-Anweisungen BULK INSERT. Mit ein wenig Ausprobieren, Nachforschen usw. könnte man es herausfinden ... nur eine kurze Vorstellung von einem Ansatz, den ich für absolut notwendig halten würde. Pimp Juice IT vor 6 Jahren 0
Was für ein LMS? Ich mache dasselbe aber in beide Richtungen - CSV-Dateien aus Crystal Reports in eine lokale MySQL-Datenbank, generieren CSV-Dateien und importieren diese in das LMS. Oder verwenden Sie die LMSs-API, um Daten zu senden / zu empfangen, um benutzerdefinierte Berichte usw. zu generieren. Ich verwende auch kein Excel dafür - ich benutze PHP als Textbearbeitungs- / Datenbankabfragesprache, die sehr einfach zu bedienen ist . Kann eine gute Ausrede sein, um PHP, Python usw. zu lernen ... ivanivan vor 6 Jahren 0
@ivanivan Das LMS ist IBM Kenexa (nicht Brassring). Ich würde gerne die API nutzen können, allerdings ist sie ziemlich begrenzt und erlaubt nur den Zugriff auf Mitgliederinformationen und Organisationen. Wenn ich die API verwenden könnte, wäre ich überglücklich :) Odinson vor 6 Jahren 0
@ Spittin'IT Interessante Option und ich möchte sicher nicht "Nein" sagen, ohne mehr darüber nachzudenken. Das ist zwar nicht ganz das, wonach ich suche, aber ich stimme zu, dass es eine Option ist. Vielen Dank! :) Odinson vor 6 Jahren 0
Mit welcher Art von E-Mail-Server arbeiten Sie und sind Sie der E-Mail-Administrator der Domäne oder können Sie mit ihm über die Option sprechen, dass der E-Mail-Server ein externes Skript oder eingebaute Funktionen usw. verwendet, und einige Regeln für den Fall der E-Mail, falls von x und gesendet an x ​​und hat einen Anhang von .csv. Kopieren Sie dann diese .csv-Datei in diesen UNC-Pfad. Von dort aus können Sie regelmäßig prüfen lassen, ob eine Datei gefunden wurde, Massenimport usw. Ein Gespräch mit Ihnen wäre vielleicht wert Ihr E-Mail-Administrator oder einige Informationen zu Ihren SMTP-Serverfunktionen für solche Optionen. Pimp Juice IT vor 6 Jahren 0
Ich gehe davon aus, dass das manuelle Herunterladen von Berichten nicht über FTP und über eine HTTP-Schnittstelle oder so etwas korrekt ist. Wenn Sie über FTP oder SFTP usw. herunterladen könnten, können Sie den Austauschteil sicher automatisieren. Pimp Juice IT vor 6 Jahren 0
@ Spittin'IT Du hast recht, wenn ich die csv manuell herunterlade, geschieht dies über das Webinterface, da es keine andere Möglichkeit gibt, als die E-Mail an mich zu senden. Ihre Idee, mit meinem E-Mail-Administrator zu sprechen, scheint eine gangbare Option zu sein. Vielen Dank! Ich werde sehen, was ich in den nächsten Tagen herausfinden kann. Odinson vor 6 Jahren 0
Eine andere Idee, wenn die HTTP-Schnittstelle API-Aufrufe verwendet, und wenn ja, dann können Sie vielleicht Argumente mit den URL-Aufrufen mit Parametern zum Anmelden, zum Herunterladen usw. übergeben. Dann können Sie PowerShell Invoke-WebRequest oder ähnliches verwenden, um den Download zu automatisieren über den URL-Aufruf. Ich gehe davon aus, dass die Daten vertraulich sind. Dies ist eine HTTPS-Schnittstelle, die hier SSL-Verschlüsselung verwendet, und Sie müssen Anmeldeinformationen eingeben, um sich an der Webschnittstelle anzumelden. Wenn das Webinterface die Backend-Logik verwendet, können Sie Parameter angeben, um anzugeben, was zu tun ist. Dies könnte ebenfalls funktionieren. Sag mir, was du bestimmst. Pimp Juice IT vor 6 Jahren 0
@ Spittin'IT Leider akzeptiert die API nur Anfragen zu Benutzer- und Organisationsinformationen. Es handelt sich um eine sehr eingeschränkte API. Ansonsten würde ich das gerne ausprobieren! Ich weiß Ihre Ideen zu schätzen, ich wünschte, ich könnte darauf reagieren. Ich warte derzeit immer noch auf meine E-Mail- / IT-Administratoren. Odinson vor 6 Jahren 0
Aufgrund der Einschränkungen des LMS und der internen Einrichtungen musste ich den Bericht wöchentlich manuell einplanen. Dann fand ich ein Powershell-Skript, mit dem ich Dateien zusammenfügen (anhängen) kann. Wenn ich sie alle zusammen habe, benutze ich einfach die Tabelle als Quelle und benutze Power BI, um die Werte zu erhalten, die ich brauche. @ McDonald's Vielen Dank für Ihre Hilfe. Ich wünschte, ich könnte etwas aus Ihren Ideen umsetzen, da dies die Dinge wirklich erleichtern würde. Odinson vor 6 Jahren 0

0 Antworten auf die Frage