Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

API auslesen

API auslesen
20.02.2023 07:40:59
Pieter
Hey, ich möchte eine API
*https://datenservice.tradinghub.eu/XmlInterface/getXML.ashx?ReportId=PricesEnergyImbalance&Start=01-10-2021&End=31-10-2021*
gerne in meine Datenbnak speichern, wie mache ich das am geschicktesten.
Sprich, jeden Tag soll die API aktuallisiert werden und alle noch nicht enhaltene Daten in die Datenbank.
Hab dazu leider noch keine Vorstellung - bitte um Hilfe
merci

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: API auslesen
20.02.2023 10:14:51
ChrisL
Hi
Menü Daten, Daten Abrufen, aus dem Web
Als Zeitraum gibst du einfach ein Datum in der Zukunft an z.B.
Start=01-01-2021&End=31-12-2099
Also kein Abgleich mit bestehenden Daten, sondern alles wird neu aufgebaut.
cu
Chris
AW: API auslesen
20.02.2023 13:02:50
Pieter
Zunächst Danke für die Antwort,
ich meinte in richtung VB Programmierung bzw SQL-Automatisierung
Automatisch die Daten in die SQL Datenbank
AW: API auslesen
20.02.2023 13:30:38
ChrisL
Hi
In den Abfrageeigenschaften, Definition, Befehlstext steht:
SELECT * FROM [PricesEnergyImbalnce]
So gesehen erfolgt das Auslesen/Selektieren bereits über ein SQL-Statement.
Wie ich verstehe, möchtest du aber nicht nur lesen, sondern auch schreiben. In Bezug auf das SQL-Statement könntest du vor der Gesamt-Selektion einfach die Tabelle leeren: DELETE FROM Tabelle1
(JOIN für die Differenz alt/neu und UPDATE scheint mir unnötig kompliziert)
Was ich gar nicht nachvollziehen kann, weshalb man Excel verwenden würde, um externe Daten aus dem Web in eine externe SQL-DB zu überführen. Excel müsste die Daten erst "auspacken", um sie frisch "verpackt" in die externe DB zu überführen. Sollte es gute Gründe geben, um die Daten zuerst in Excel einzulesen, dann kannst du es ja auch wie beschrieben über die Standardfunktionalität selektieren. Damit wärst du ein Problem los und müsstest dich nur noch um das UPDATE der DB kümmern.
cu
Chris
Anzeige
AW: API auslesen
20.02.2023 17:17:25
ChrisL
Hi
Also gut...
Wenn es unbedingt SQL sein soll, hier ein Beispiel.
Die XML-Datei wird wie beschrieben über eine Webabfrage gelesen und in die Excel-Datei Tabelle1 importiert.
Excel-Tabelle1 wird gelesen (SELECT *)
Weil ich keine SQL-DB zur Hand habe, habe ich es in eine Access-Datei übertragen. Bedeutet der Connection-String muss für die SQL-DB modifiziert werden.
Den Tabelleninhalt der Access Tabelle lösche ich zuerst komplett.
Danach erfolgt ein zeilenweiser Übertrag, wobei ich nur die ersten 3 Felder übertrage (muss noch ergänzt werden).
Es zeigt einfach die Möglichkeiten, speziell ADODB (für SQL) auf. Ob man es so oder anders machen will, ist ein anderes Thema.
cu
Chris
Sub t()
Dim objConQuelle As Object, objConZiel As Object
Dim objRsQuelle As Object
Set objConQuelle = CreateObject("ADODB.Connection")
objConQuelle.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0 Xml;HDR=YES';"
Set objRsQuelle = objConQuelle.Execute("SELECT * FROM [Tabelle1$]")
Set objConZiel = CreateObject("ADODB.Connection")
objConZiel.Open "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Pfad\Database1.accdb"
objConZiel.Execute ("DELETE FROM Tabelle1")
objRsQuelle.MoveFirst
Do Until objRsQuelle.EOF
    objConZiel.Execute ("INSERT INTO Tabelle1 ([Gasday],[PositiveEnergyImbalancePrice],[NegativeEnergyImbalancePrice]) VALUES ('" & objRsQuelle.Fields("Gasday").Value & "'," & objRsQuelle.Fields("PositiveEnergyImbalancePrice").Value & "," & objRsQuelle.Fields("NegativeEnergyImbalancePrice").Value & ")")
    objRsQuelle.MoveNext
Loop
objRsQuelle.Close
Set objRsQuelle.ActiveConnection = Nothing
objConQuelle.Close
Set objConQuelle = Nothing
objConZiel.Close
Set objConZiel = Nothing
End Sub

Anzeige
AW: API auslesen
21.02.2023 14:32:31
Pieter
Zunächst Danke für die Mühe!!
Ist es möglich Über SQL direkt die daten automatisch in der Datenbank zu aktualisieren ?
AW: API auslesen
21.02.2023 14:55:07
ChrisL
Hi
Nach meinem Verständnis ist eine XML-Datei keine klassische Datenbank und kann daher nicht konventionell über SQL gelesen werden. Daher glaube ich, wenn du über Excel gehen willst, müsstest du die Daten zuerst über ein anderes Mittel holen. Hierfür scheint mir die beschriebene Standardfunktionalität bestens geeignet.
In anderen Umgebungen stehen andere Mittel zur Verfügung. Gemäss eine kurzen Recherche sollte es für Microsoft SQL Server die Methode T-SQL bzw. das Statement OPENROWSET geben. Genauer kenne ich mich damit aber nicht aus.
Schlussendlich, wie bereits ursprünglich angedeutet, verstehe ich einfach nicht was du willst bzw. wozu der Handstand gut sein soll. Mit der Aktion duplizierst du bereits existierende/zugängliche Daten. Ginge es um eine Auswertung, müsste man die Daten nicht duplizieren und könnte einfach auf der Webabfrage eine Auswertung aufbauen. Wenn es für eine andere Anwendung benötigt wird, dann würde man die entsprechende Anwendung (z.B. SQL-Server) zum Datenübertrag verwenden und nicht Excel.
cu
Chris
Anzeige
AW: API auslesen
23.02.2023 07:37:50
Pieter
Der Grund für das ganze ist:
Ich nehme mir die Daten aus dem Web, möchte diese auch "Archivieren" und möchte später auf die Daten Zugreifen können für Berechnungen.
Wenn ich mir die Daten nur aus dem Web ziehe, habe ich Sie nicht Archiviert deshalb der große Umweg mit :
Daten vom Web ( XML-Format, dar nur XML angeboten wird) aus dem Web ziehen und die dann in meine Datenbank zu packen.
Nun die Frage wie ich das am sinvollsten automatisch machen kann :))))))
AW: API auslesen
23.02.2023 08:52:14
ChrisL
Hi
Man könnte einfach die XML-Datei archivieren. Hierzu schlägt ChatGPT folgenden Code vor:
Sub SaveUrlAsXml()
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://datenservice.tradinghub.eu/XmlInterface/getXML.ashx?ReportId=PricesEnergyImbalance&Start=01-10-2021&End=31-10-2099", False
    http.Send
    
    Dim resp As String
    resp = http.responseText
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim file As Object
    Set file = fso.CreateTextFile("C:\Users\CH00LNC\Desktop\file.xml", True)
    file.Write resp
    file.Close
    
    Set file = Nothing
    Set fso = Nothing
    Set http = Nothing
End Sub
Oder du nutzt die Webabfrage und kopierst das Ergebnis, damit es von der Datenverbindung "entkoppelt" wird:
wksQuelle.ListObjects("Tabelle-Abfrageresultat").Range.Copy wksZiel.Range("A1")
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige