![]() |
Datenbank: Sybase • Version: 12 • Zugriff über: TasaSession, TasaSet
Tool um Excel Daten in Db einzufügen
Hallo,
suche gerade eine Idee für mein Abschlussprojekt in meiner Ausbildung zum Anwendungsentwickler. Der zeitliche Rahmen sollte 70 Stunden nicht überschreiben (inklusive Dokumentation, Lastenheft, Pflichtenheft usw.) Jetzt zu meiner Frage, was haltet ihr von einem Tool welches Excel Daten in eine SQL Datenbank einlesen kann. Aber nicht nur simpel einlesen, sprich 1 zu 1 übernehmen, es sollen verschiedene Möglichkeiten bestehen. Ich hatte daran gedacht im Programm zwei Grids zu setzten, das eine simuliert die DB und das andere die Excel Datei. User hat die Möglichkeit eine Excel Datei zu laden, als Vorschau werden dann im unteren Grid 5 Zeilen der Excel Datei angezeigt. Dann hat er die Möglichkeit sich mit der gewünschten DB zu verbinden. In einer Comobobox werden dann sämtliche Tabellen der DB aufgelistet. Wird eine Tabelle ausgewählt, erscheint eine zweite Comobox, welche alle Spalten der Tabelle auflistet. Wenn der Anwender nun eine Spalte auswählt wird der Spaltennamen in das obere Db-Grid eingetragen, so kann der user die Spalten festlegen in welche die Excel-Datei eingelesen werden soll. (Natürlich soll auch möglich sein, in mehrere SQL Tabellen einzulesen) Dann wird per Drag and Drop vom Excel-Grid die Spalte dem DB-Grid zugeordnet und farbig markiert. Außerdem sollen auch Modifikationen der Spalten möglich sein(also veränderung der Excel-Daten): 1. Spalten Verbinden: Bspw. aus Strasse und Hausnummer ein Feld in der Db machen 2. Rechnungen: Bspw. Rabatte von Preisen ausrechnen 3. Kürzel voranstellen oder anhängen: Bspw. Bei Arikelnummer einen Zusatz B-xxxxx gibt es Sowas in der Art schon?? Hab jetzt nichts vergleichbares gefunden.... Vielleicht könntet ihr mir ein kleines Feedback von meiner Idee geben, was ihr davon haltet, oder evtl. Verbesserungen, Anregungen Grüße |
AW: Tool um Excel Daten in Db einzufügen
Hi, sofern du von einer MS-SQL Datenbank ausgehst, gibt's das schon - MS liefert das mit.
Tipps zur Umsetzung: - achte auf leere Felder im Excel - achte auf Formeln im Excel - achte auf Datentypen (Zeichen, Zahlen, Gleitkomma) - achte auf Contraints/Indizes/Primaries auf der Datenbanktabelle - achte auf die verschiedenen Excel-Formate (XLS vs. XLSX) :-) Mathias |
AW: Tool um Excel Daten in Db einzufügen
So ein Tool bringt nicht viel, denn die meisten RDBMS bringen ihre eigenes Werkzeug mit, um EXCEL-Dateien einzulesen. Des Weiteren gibt es wesentlich mehr Szenarion, die Daten einzulesen, als die Du angegeben hast. Du willst eigentlich nur eine Tabelle aus EXCEL auf eine Tabelle in der DB Mappen, also
(EXCEL-Spalte --> Feldname). Das ist banal. Speziell der Passus 'Natürlich soll auch möglich sein, in mehrere SQL Tabellen einzulesen' bedarf einen näheren Erläuterung. Wie soll das gehen? Pro Sheet eine Tabelle oder wie? Es ist 1000x einfacher, die EXCEL-Datei 'irgendwie' in die DB zu saugen und von da aus die Daten zu konvertieren, aggregieren und zu verteilen. Da es sich im Anwendungsfall häufig um ein und die selbe EXCEL-Struktur handelt, schreibt man sich ein Skript, welches die Daten dann verteilt. Edit: Ich lese gerade Zitat:
Wie gesagt, in der Praxis vielleicht nur bedingt zu gebrauchen, aber als Abschlussprojekt sehr gut. Ich denke, mit 70 Stunden bist Du knapp dabei. Nimm Dir nicht zu viel vor. Lieber beschränkter Funktionsumfang (EXCEL-Datei, DB, Tabelle aussuchen, dann das mapping) aber gut dokumentiert, als zu viel, halb fertig, buggy und Schrott-Doku. Die Basisfunktionalität ist schon ausreichend vom Zeitumfang her. Schließlich willst Du ja auch eine schöne Softwarearchitektur, und die fällt nicht vom Himmel. Los! |
AW: Tool um Excel Daten in Db einzufügen
Exceltabellen kannst Du öffnen wie eine normale Datenbank (TDataSet). Dann kannst Du alles auslesen und in die andere Datenbank übertragen:
Das geht via ADO TADOConnection, dort den Connectionsstring rein: ![]() dann ist jede Karteikarte der Execldatei als eigenständige Tabelle da |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Zitat:
|
AW: Tool um Excel Daten in Db einzufügen
danke erst mal für die teilweise hilfreichen Antworten.
Vielleicht ist es nicht deutlich hervogetreten aus der Fragestellung: Das Ganze ist als Abschlussprojekt für meine Ausbildung gedacht. Mir ist bis jetzt bewusst, dass es nur möglich ist, die Daten von Excel 1 zu 1 in die DB zu übertragen, um sie dort dann anzupassen, bzw zu verändern. Mein tool soll ja diese Aufgaben schon übernehmen. |
AW: Tool um Excel Daten in Db einzufügen
ich bin auch gerne offen für andere Vorschläge, muss auch nicht zwinged was mit Datenbanken sein,
falls jemandem etwas einfaällt. |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Zitat:
Es ist unterm Strich wirklich schneller, das so zu machen, als (ich habe die SSAS vom SQL-Server vor Augen) sich durch irgendwelche Wizards zu klicken oder tolle Einstellungen per Combo vorzunehmen. in TSQL wäre das
Code:
select * into #tempExecl from Openrowset(.....)
merge from #tempExcel into myDestination ... Zitat:
|
AW: Tool um Excel Daten in Db einzufügen
Wie wäre es mit einer Währungsumrechnung? Holst grundsätzlich die Daten mal bei der EZB ab, berechnest und hinterlegst die Wechselkurse in einer Tabelle. Stellst einen Funktionsbaustein für die Währungsumrechnung in eine andere Währung zur Verfügung. Als Beispiel dann noch eine Testoberfläche und am schluss dann hier in die Code Libary :)
Kannst so komplex machen wie du willst, mit Mengen-/Preisnotierung, Kehrwerte, Multiplier, Basiswährung, unterschiedliche Kurstypen, Euro Konvertierung ... Ne nach Lust und Zeitbudget :) |
AW: Tool um Excel Daten in Db einzufügen
Hallo,
afaik sollen das sinnvolle Projekte sein, oder Teile/Module eines größeren Projektes. Entweder für einen Kunden oder für etwas internes. In der Realität sieht das wahrscheinlich oft anders aus, aber es sollte mMn schon etwas sein, was es nicht haufenweise gibt und was in der eigenen Firma tatsächlich gebraucht werden könnte. Daher vielleicht wirklich mal beim Ausbilder nachfragen, ob es nicht in der (für die) Firma irgendetwas gibt, dass man machen könnte. Just my 2 cents. |
AW: Tool um Excel Daten in Db einzufügen
@Dejan Vu
Das mag ja alles schön und recht sein, wenn man Ahnung von SQL hat... Es kam nur mal eine Anfrage von einem unserer Kunden, ob sowas nicht umsetzbar ist, und für den Fall, finde ich das Tool sehr nützlich. Mir ist auch klar, dass jemand der sich gut mit SQL auskennt, anderer, schnellere und effektivere Wege parat hat um das Ganze umzusetzten. Und in der Hinsicht hab ich durch einige Recherchen noch nichts vergleichbares auf dem Markt entdeckt @DSP Das mit dem Währungsrechner hört sich nicht schlecht an, muss mich da mal bisschen informieren |
AW: Tool um Excel Daten in Db einzufügen
Komisch, meine Kernaussage habe ich wohl nicht abgeschickt: Es ist ein tolles Projekt für eine Abschlussprüfung, die auch einen Mehrwert hat. Wenn du das hinbekommst, ist das ein Beleg für dein Können.
Ich würde die Aufgabe skizzieren, die Grundfunktionen definieren und das Thema dann absegnen lassen. Dann gehst Du ans Werk |
AW: Tool um Excel Daten in Db einzufügen
[OT]
Zitat:
[/OT] Ich finde die Idee übrigens ganz gut, z.B. eine Funktion zur Entfernung von Prüfziffern, oder zur Formatierung von Zifferngräbern (DE123456789012 -> DE 123 456 789 012) oder das Gegenteil (DE 123 456 789 012 ->DE123456789012) (statt blanks sind Kommata oder Punkte auch beliebt) wäre für die Datenaufbereitung ganz nett. Gruß K-H |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
|
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Gruß K-H |
AW: Tool um Excel Daten in Db einzufügen
Ich find, das ist eine schöne Aufgabe. Nur nicht unbedingt für Delphi.
Was Datenoptimierung und Transformation(!) angeht, bietet Excel eigentlich mehr, als man mal eben in 70h bauen kann. Cool fänd ich ein Excelplugin, das in der Lage ist, markierte Spalten (Mehrfachauswahl) sowie gefilterte Zeilen (nur die aktuell angezeigt sind) unabhängig ob Formel oder Wert in eine DB.NeueTabelle oder DB.BestehendeTabelle zu blasen. Das würde erlauben, ein beliebiges Excelsheet aufbereiten zu können, mittels Formeln zu bereinigen, etc. pp. und dann eine geprüfte, bewertete Menge filtern und in die DB schieben zu können. Zum Thema SQL und "geht alles viel schneller": Neben den recht intuitiven Möglichkeiten, Daten per Formel zu bearbeiten, ist eine große Stärke von SpreadSheet Systemen der wahlfreie Zugriff auf Vorgänger/Nachfolger "Datensätze", wie er in vielen RDBMS gar nicht möglich ist, oder wenn doch, dann eben ist das eher etwas für SQL Experten. Den Umweg über Delphi finde ich dabei nicht wirklich notwendig. Wär ein nettes Werkzeug für adhoc Geschichten. |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Ich habe das gerade die letzten Tage gemacht. So ein Import dauert schon ein paar Minuten und wenn ich die Millionen von Datensätzen in EXCEL erst konvertiert und dann über mehrere Versuche ins RDBMS importiert hätte, wäre ich jetzt noch nicht fertig. Also erst -wupps- als Tabelle mit lauter 'varchar(max)' Spalten importiert, ein paar Indexe gesetzt, neue Spalten hinzugefügt, konvertiert und dann in die Zieltabellen transformiert. Und zwar jeweils in Transaktionen gekapselt:
Code:
Und dann, wenn die Verifizierung erfolgreich ist, aus dem 'rollback' ein 'commit', Skript nochmal laufen lassen, fertig.
begin transaction
-- do some stuff select <stuff> into results from importedTable update otherREsults set foo = bar from importedTable... -- verify the results select * from results select * from otherResults rollback transaction Ich verwende jedes Werkzeug genau da, wo es am sinnvollsten/effektivsten ist. Wenn die Daten aufbereitet werden sollen, oder wenn ich Berechnungen vor dem Import vornehmen muss, würde ich vielleicht EXCEL einsetzen, das käme drauf an. Andererseits kann man mit SQL auch rechnen und Datensätze durchnummerieren, also wozu großartig mit EXCEL arbeiten? Ich bin auch nicht so versiert mit dem Teil, und wüsste jetzt gar nicht, wie ich eine Formal auf 2.5 Mio Zeilen anwenden soll, außer mit der Maus runterziehen (ächtz) Aber bloß weil ich auf Vorschlaghammer stehe, heißt das ja nicht, das ich damit auch einen Nagel aus dem Holz ziehe. Also, kommt auf den Nagel an. |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Dann geht es vielleicht doch um Spreadsheetfunktionen? Wie gesagt, Analytic Functions / Window Functions stehen nicht in allen RDBMS zur Verfügung. Insofern kann man Excel da sehr gut einsetzen, bevor es zur DB geht. Aber das kann ja der TE prima selber entscheiden. Er hat nach Vorschlägen gefragt. Was Du ansonsten beschreibst, ist kein klassisches ETL sondern LTE oder LET. Das ist genau mein Ding, ich mache es auch nicht anders. |
AW: Tool um Excel Daten in Db einzufügen
Zitat:
Ansonsten gilt immer vorneweg: Werkzeuge dort einsetzen, wo sie sinnvoll sind. Da muss man keine Erbsenzählerei betreiben, Sätze zusammenziehen und einen neuen scheinbar streibaren Zusammenhang herstellen usw. Ist doch wohl logisch, das ich mir in SQL keinen abbreche, was in EXCEL (oder mit Bleistift) besser geht. Ich gebe es zu, es ist frustrierend (das Wetter), aber hey! Es ist Freitag, also. 8-) |
AW: Tool um Excel Daten in Db einzufügen
ich mach mich jetzt einfach mal ans werk und werde die kommenden Wochen mal was von meinen
Ergebnissen posten. Bin jetzt erst mal 2 Wochen in urlaub, danach wird angegriffen |
AW: Tool um Excel Daten in Db einzufügen
Mach das. Bei Fragen einfach fragen!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz