Excel via Import in SQL Datenbank

Phill__

Lt. Junior Grade
Registriert
März 2016
Beiträge
375
Hallo,

da ich mich neuerdings Beruflich mit Datenbanken und Import herumschlagen muss würde ich gerne ein kleines Projekt umsetzen.

Ich würde eine Excel Tabelle erstellen die verschiedene Spalten mit Inhalt enthält.
Diese Tabelle soll automatisch durch ein Programm in eine SQL Datenbank geschrieben werden.
Bevor Daten in die SQL geschrieben werden soll eine Validierung der Daten stattfinden.

Bisher kann ich nicht Programmieren möchte aber anhand dieses Projekts lernen.

Wie soll ich hier am besten vorgehen und welche Programmiersprache soll ich einsetzen?

Gruß,

Phill
 
vba in Exel als Sprache, in diese Richtung würde ich mich mal informieren...
 
VBA wird bei uns in der Firma leider geblockt :(
 
Es ist ja im ersten Step ein Projekt für mich.
Wenn ich dann am ende des Projekts der Meinnung bin das ich es in der Firma einsetzen kann würde das Tool ja unsere QS durchlaufen. Also Ja es ist in Ordnung.
 
Wäre schon ganz cool zu wissen, um was für eine SQL Umgebung es sich handelt... ?
 
Also es handelt sich um ein Microsoft SQL 2017 Express das ganze läuft auf einem Windows 216 Server
 
Sprich mit deiner IT Abteilung. Stell vor was du vor hast und dann können sie dich entsprechend beraten. Evtl. bekommst du dann auch eine Entsperrung der VBA Umgebung für Excel.

Wenn die Daten in Excel liegen, dann kannst du per VBA diese dann auch in eine DB pumpen. Du bräuchtest aber auch Zugriff auf die Datenbank ... bitte zuerst eine entsprechende Test-Umgebung nehmen und nicht direkt in Produktion testen. ;)
 
Phill_HF schrieb:
Also es handelt sich um ein Microsoft SQL 2017 Express das ganze läuft auf einem Windows 216 Server

Für sowas gibts auch von MS Whitepapers...

Long story short, VBA kenne ich nicht, aber die SQL Seitige integration ist SSIS bzw wenns nur wenige Daten sind geht uU auch ein bulk insert...

https://docs.microsoft.com/en-us/sq...s/import-export/import-data-from-excel-to-sql

Insert hat ein Limit von 1000 Datensätzen / Run

Je nachdem was genau du vorhast, ist dein angefragter Weg aber auch falsch, weil man ggf. eher die Daten im SQL liegen lässt und nur im Excel aufbereitet.
 
pizza4ever schrieb:
Für sowas gibts auch von MS Whitepapers...

Long story short, VBA kenne ich nicht, aber die SQL Seitige integration ist SSIS bzw wenns nur wenige Daten sind geht uU auch ein bulk insert...

https://docs.microsoft.com/en-us/sq...s/import-export/import-data-from-excel-to-sql

Insert hat ein Limit von 1000 Datensätzen / Run

Je nachdem was genau du vorhast, ist dein angefragter Weg aber auch falsch, weil man ggf. eher die Daten im SQL liegen lässt und nur im Excel aufbereitet.

Danke für den Link sieht ja schon ganz gut aus.
Hier würde ich aber direkt in die Datenbank schreiben oder? Wie sieht es mit der Validierung der Daten aus?
 
Typischerweise importiert man "Excel" Daten indem man sie als csv exportiert und dann in die Datenbank importiert. Es wäre dann die Frage, was du unter "Validieren" verstehst bzw. was die Anforderungen da genau sind. Recht oft kann man den Import und die Validierung mit dem SQL-Dialekt des DBS erschlagen.

Ansonsten würde ich von dem Ganzen allgemein Abraten. Es gibt so Dinge da schrillen die Alarmglocken. Anfänger ohne Vorwissen die am Produktivsystem lernen sind ein Garant für Probleme. Genauso wie es sträflich ist Daten parallel in Excel vor zuhalten / zu bearbeiten als auch in der Datenbank.
 
Zuletzt bearbeitet:
Piktogramm schrieb:
Typischerweise importiert man "Excel" Daten indem man sie als csv exportiert und dann in die Datenbank importiert. Es wäre dann die Frage, was du unter "Validieren" verstehst bzw. was die Anforderungen da genau sind. Recht oft kann man den Import und die Validierung mit dem SQL-Dialekt des DBS erschlagen.

ich versuche es mal anders: Ich habe Daten das Format ist grundsätzlich erstmal egal. Diese Daten sollen von einem spezifizierten Ort in eine Datenbank überführt werden. Wenn Daten in die Datenbak eingetragen werden muss eine Validierung der Daten stattfinden z.B. Spalte A in der Datenbank erwartet nur Zahlen also muss zuvor geprüft sein das dort auch nur zahlen ankommen.

Ich spinne jetzt gerade mal ein bisschen ruma ber kann man das nicht über HTTP Post/Get realisieren?
Ergänzung ()

Piktogramm schrieb:
Typischerweise importiert man "Excel" Daten indem man sie als csv exportiert und dann in die Datenbank importiert. Es wäre dann die Frage, was du unter "Validieren" verstehst bzw. was die Anforderungen da genau sind. Recht oft kann man den Import und die Validierung mit dem SQL-Dialekt des DBS erschlagen.

Ansonsten würde ich von dem Ganzen allgemein Abraten. Es gibt so Dinge da schrillen die Alarmglocken. Anfänger ohne Vorwissen die am Produktivsystem lernen sind ein Garant für Probleme. Genauso wie es sträflich ist Daten parallel in Excel vor zuhalten / zu bearbeiten als auch in der Datenbank.

Wer spricht davon das ich an einem Produktiv System sitze?
 
Um dich vernünftig beraten zu können müsste man die genaue Anforderungn kennen.. Mit Excel eine Datenbank befüllen ist grundsätzlich erstmal schräg, obwohl man auch im Excel Wertebereiche vorgeben kann.

Alterantiv könnte man es auch im MSSQl erstmal eine Temp tabelle schreiben und dann dort die Validierung vornehmen.. aber wie gesagt alles nur ins Blaue geraten...
 
Phill_HF schrieb:
Wenn ich dann am ende des Projekts der Meinnung bin das ich es in der Firma einsetzen kann würde das Tool ja unsere QS durchlaufen.

Du schreibst selber, dass das Projekt perspektivisch in Richtung Produktivsystem geht.

Das Prüfen ob die geparsten Daten einem Datentyp entsprechen wird in den überwiegenden Fällen über die Definition entsprechender Datentypen erledigt. Wobei das nicht ansatzweise alle möglichen Abweichungen abfangen kann.

Nimm dir einen Kurs / Buch zu Datenbanken her und arbeite das durch und schaff dir Grundlagenwissen drauf.
Ergänzung ()

pizza4ever schrieb:
Mit Excel eine Datenbank befüllen ist grundsätzlich erstmal schräg, obwohl man auch im Excel Wertebereiche vorgeben kann.

Es wäre grundlegend falsch, Excel erlaubt es Anwendern Mist zu bauen und der Datenbank damit fehlerhafte Datensätze einzugeben.
 
Zuletzt bearbeitet:
Man kann im Excel sowas absichern, die Frage ist halt ob das Sinn macht oder ob Excel da noch das richtige Tool ist...
 
SSIS Funktioniert nicht mit der Express-Version des MS SQL Servers.
SSIS wäre das dafür richtige Tool.
 
Es kommt darauf an, um wieviele Datensätze es sich handelt und wie oft diese Importe durchgeführt werden sollen.
Ich habe auf der Arbeit sehr oft die Anforderung, Daten die ich als Excel-Tabelle bekomme in eine SQL-Datenbank einzutragen.
Für regelmäßige automatisierte Imports nutze ich auf dem MS-SQL-Server SSIS - was leider auf dem Express-Server nicht geht :-(
Für andere Anforderungen habe ich mir Excel-Vorlagen erstellt, in die entweder ich die Daten einfüge, oder ich gebe die Vorlage zum Ausfüllen an den User, der seine Daten einfügt, und die eine Datenüberprüfung mittels Excel-Formeln machen. Stimmen die Werte, wird mittels einer anderen Excel-Formel ein SQL-Script mit Insert/Update erstellt, das ich per CopyAndPaste im SQL-Management-Studio ausführe und so die Daten in die DB bringe.
Vielleicht wäre das eine Technik, die Du auch anwenden könntest.
 
Generation von (einzelnen ?) INSERT - Statements über Excel? Ich dachte, das wären nur Horrorgeschichten vom Adminstammtisch -.-

Ganz ehrlich, wieso zieht man sich den Spaß nicht einfach als csv in die Datenbank anstatt händische Copy & Paste Orgien zu fahren?

Mal ganz abgesehen davon, wenn Daten in Excel bearbeitet werden und dann in die Datenbank geschoben werden. Wie fangt ihr da das Potential für Integritätsverletzungen, Redundanzen etc ab?
 
Zuletzt bearbeitet:
Piktogramm schrieb:
Generation von (einzelnen ?) INSERT - Statements über Excel? Ich dachte, das wären nur Horrorgeschichten vom Adminstammtisch -.-

Ganz ehrlich, wieso zieht man sich den Spaß nicht einfach als csv in die Datenbank anstatt händische Copy & Paste Orgien zu fahren?

Mal ganz abgesehen davon, wenn Daten in Excel bearbeitet werden und dann in die Datenbank geschoben werden. Wie fangt ihr da das Potential für Integritätsverletzungen, Redundanzen etc ab?

pizza4ever schrieb:
Um dich vernünftig beraten zu können müsste man die genaue Anforderungn kennen.. Mit Excel eine Datenbank befüllen ist grundsätzlich erstmal schräg, obwohl man auch im Excel Wertebereiche vorgeben kann.

Alterantiv könnte man es auch im MSSQl erstmal eine Temp tabelle schreiben und dann dort die Validierung vornehmen.. aber wie gesagt alles nur ins Blaue geraten...

?

Wie gesagt es kommt immer drauf an was du genau brauchst wie oft usw... Man muss nicht immer gleich eine ganze SSIS Umgebung usw aufsetzen...
 
Das nichts, aber wieso sollte man sich Excelmonster bauen die, die SQL Statements bauen die man dann händisch ausführen lässt, wenn man einen csv Import nutzen kann?

Oder man nutzt den Excelimport vom SQL Studio (müsste auch in den Expressvarianten gehen).

https://docs.microsoft.com/de-de/sq...el-to-sql#sql-server-import-and-export-wizard

Das Handbuch vieler Microsoftprodukte ist echt gut und bietet so viele Möglichkeiten. "Pfusch mit Excel und händisches Copy&Paste" habe ich da noch nicht gefunden..
 
Zurück
Oben