.NET-HILFE

DuckDB C# (Wie es für Entwickler funktioniert)

Veröffentlicht 13. August 2024
Teilen Sie:

Einführung

DuckDB.NET ist ein Open-Source-Anbieter von .NET-Bindings für die native DuckDB-Bibliothek, die für eine nahtlose Integration in C# entwickelt wurde. Es bietet einen ADO.NET-Provider, der die Verwendung von DuckDB, einer Low-Level-Bindungsbibliothek, in .NET-Anwendungen erleichtert. Dieses Paket ist ideal für Entwickler, die die leistungsstarken analytischen Fähigkeiten von DuckDB in einer C#-Umgebung nutzen möchten.

Einrichtung

Die Installation von DuckDB.NET ist ganz einfach. Sie können es mit der .NET CLI zu Ihrem Projekt hinzufügen:

dotnet add package DuckDB.NET.Data.Full
dotnet add package DuckDB.NET.Data.Full
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Alternativ können Sie es auch über den NuGet Package Manager in Visual Studio installieren.

Grundlegende Verwendung

Nach der Installation können Sie DuckDB.NET verwenden, um SQL-Abfragen in Ihrer C#-Anwendung auszuführen. Hier ist ein einfaches Beispiel:

using System;
using DuckDB.NET.Data;
class Program
{
    static void Main()
    {
        using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
        duckdbconnection.Open();
        using var command = duckdbconnection.CreateCommand();
        command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
        command.ExecuteNonQuery();
        command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
        command.ExecuteNonQuery();
        command.CommandText = "Select count(*) from integers";
        var executeScalar = command.ExecuteScalar();
        command.CommandText = "SELECT foo, bar FROM integers;";
        using var reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine($"{reader.GetInt32(0)}, {reader.GetInt32(1)}");
        }
    }
}
using System;
using DuckDB.NET.Data;
class Program
{
    static void Main()
    {
        using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
        duckdbconnection.Open();
        using var command = duckdbconnection.CreateCommand();
        command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
        command.ExecuteNonQuery();
        command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
        command.ExecuteNonQuery();
        command.CommandText = "Select count(*) from integers";
        var executeScalar = command.ExecuteScalar();
        command.CommandText = "SELECT foo, bar FROM integers;";
        using var reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine($"{reader.GetInt32(0)}, {reader.GetInt32(1)}");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Dieses Beispiel zeigt, wie Sie mit DuckDB.NET eine Tabelle erstellen, Daten einfügen und Daten abfragen können.

Ausgabe

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 1 - DuckDB.NET Konsolenausgabe

Dateneingabe

DuckDB.NET unterstützt das Lesen von Daten aus verschiedenen Formaten, einschließlich CSV- und Parquet-Dateien. So können Sie Daten aus einer CSV-Datei lesen:

command.CommandText = "COPY integers FROM 'example.csv' (FORMAT CSV);";
command.ExecuteNonQuery();
command.CommandText = "COPY integers FROM 'example.csv' (FORMAT CSV);";
command.ExecuteNonQuery();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Integration mit DataFrames

DuckDB.NET kann auch in Datenrahmen integriert werden, so dass Sie die Daten mit der vertrauten SQL-Syntax bearbeiten können. Dies ist besonders bei der Datenanalyse nützlich.

Ergebnis Konvertierung

Sie können Abfrageergebnisse in verschiedene Formate konvertieren, z. B. in Listen oder benutzerdefinierte Objekte, um die Arbeit mit den Daten in Ihrer Anwendung zu erleichtern:

var results = new List<(int foo, int bar)>();
while (reader.Read())
{
    results.Add((reader.GetInt32(0), reader.GetInt32(1))); 
    // can also use for with var index and iterate the results
}
var results = new List<(int foo, int bar)>();
while (reader.Read())
{
    results.Add((reader.GetInt32(0), reader.GetInt32(1))); 
    // can also use for with var index and iterate the results
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Schreiben von Daten auf die Festplatte

DuckDB.NET unterstützt das Schreiben von Daten auf die Festplatte in verschiedenen Formaten. Sie können die COPY-Anweisung verwenden, um Daten in eine CSV-Datei zu exportieren:

command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV);";
command.ExecuteNonQuery();
command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV);";
command.ExecuteNonQuery();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Einführung in IronPDF

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 2 - IronPDF

IronPDF ist eine C# PDF-Bibliothek, die die Erzeugung, Verwaltung und Extraktion von Inhalten aus PDF-Dokumenten in .NET-Projekten ermöglicht. Hier sind einige der wichtigsten Merkmale:

  1. HTML zu PDF Konvertierung:

    • Konvertieren Sie HTML-, CSS- und JavaScript-Inhalte in PDF-Dateien.

    • Chrome Rendering Engine für pixelgenaue PDF-Dokumente.

    • Generieren Sie PDFs aus URLs, HTML-Dateien oder HTML-Strings.
  2. Bild- und Inhaltskonvertierung:

    • Konvertieren Sie Bilder in und aus PDF-Dokumenten.

    • Extrahieren Sie Text und Bilder aus vorhandenen PDF-Dokumenten.

    • Unterstützung für verschiedene Bildformate wie JPG, PNG, etc.
  3. Bearbeitung und Manipulation:

    • Legen Sie Eigenschaften, Sicherheit und Berechtigungen für PDF-Dokumente fest.

    • Hinzufügen digitaler Signaturen zu PDFs.

    • Bearbeiten Sie die Metadaten und den Revisionsverlauf.
  4. Plattformübergreifende Unterstützung:

    • Arbeitet mit .NET Core(8, 7, 6, 5 und 3.1+), .NET-Standard(2.0+)und .NET-Framework(4.6.2+).

    • Kompatibel mit Windows, Linux und macOS.

    • Verfügbar über NuGet für eine einfache Installation.

Erzeugen von PDF-Dokumenten mit IronPDF und DuckDB .NET

Erstellen Sie zunächst eine Konsolenanwendung mit Visual Studio (siehe unten).

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 3 - Konsolenanwendung

Geben Sie den Projektnamen an.

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 4 - Projektkonfiguration

Bereitstellung der .NET-Version.

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 5 - Ziel-Framework

Installieren Sie das IronPDF-Paket.

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 6 - IronPDF

Installieren Sie das DuckDB.NET-Paket.

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 7 - DuckDB.NET

using DuckDB.NET.Data;
namespace CodeSample
{
    public static class DuckDbDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo DuckDb and IronPDF</h1>";
            content += "<h2>Create DuckDBConnection</h2>";
            content += "<p>new DuckDBConnection(\"Data Source=:memory:\");</p>";
            content += "<p></p>";
            using var connection = new DuckDBConnection("Data Source=:memory:");
            connection.Open();
            using var command = connection.CreateCommand();
            command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
            command.ExecuteNonQuery();
            content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";
            command.CommandText = "INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);";
            command.ExecuteNonQuery();
            content += "<p>INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);</p>";
            command.CommandText = "SELECT book, cost FROM integers;";
            using var reader = command.ExecuteReader();
            content += "<p>SELECT book, cost FROM integers;</p>";
            while (reader.Read())
            {
                content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
                Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
            }
            content += "<p>Save data to CSV with COPY integers TO 'output.csv' (FORMAT CSV);</p>";
            command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV);";
            command.ExecuteNonQuery();
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeDuckDbNet.pdf");
        }
    }
}
using DuckDB.NET.Data;
namespace CodeSample
{
    public static class DuckDbDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo DuckDb and IronPDF</h1>";
            content += "<h2>Create DuckDBConnection</h2>";
            content += "<p>new DuckDBConnection(\"Data Source=:memory:\");</p>";
            content += "<p></p>";
            using var connection = new DuckDBConnection("Data Source=:memory:");
            connection.Open();
            using var command = connection.CreateCommand();
            command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
            command.ExecuteNonQuery();
            content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";
            command.CommandText = "INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);";
            command.ExecuteNonQuery();
            content += "<p>INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);</p>";
            command.CommandText = "SELECT book, cost FROM integers;";
            using var reader = command.ExecuteReader();
            content += "<p>SELECT book, cost FROM integers;</p>";
            while (reader.Read())
            {
                content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
                Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
            }
            content += "<p>Save data to CSV with COPY integers TO 'output.csv' (FORMAT CSV);</p>";
            command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV);";
            command.ExecuteNonQuery();
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeDuckDbNet.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Code Erläuterung

Der Code soll zeigen, wie DuckDB.NET für Datenbankoperationen und IronPDF für die Erstellung eines PDF-Berichts mit den Ergebnissen der Datenbankabfrage verwendet werden kann.

Wichtige Komponenten

  1. DuckDB.NET:

    • DuckDBConnection: Stellt eine Verbindung zu einer speicherinternen DuckDB-Datenbankdatei her("Datenquelle=:Speicher:"). Diese Verbindung wird im gesamten Code zur Ausführung von SQL-Befehlen verwendet.
  2. Datenbankbetrieb:

    • Tabellenerstellung: Definiert einen SQL-Befehl(CREATE TABLE ganze Zahlen(buch STRING, Kosten INTEGER);) um eine Tabelle mit dem Namen integers mit den Spalten book(STRING) und var Spalte Kosten(INTEGER).

    • Dateneinfügung: Fügt Zeilen in die Ganzzahlentabelle ein(INSERT INTO ganze Zahlen VALUES(buch1", 25), (buch2", 30), (buch3", 10);).

    • Datenabruf: Führt eine SELECT-Abfrage aus(SELECT buch, kosten FROM ganzzahlen;) um Daten aus der Ganzzahlentabelle zu holen. Die abgerufenen Daten werden in HTML formatiert(inhalt) und auf der Konsole ausgegeben. Die Print-to-Console-Funktionalität kann auch in eine neue private static void printqueryresults-Methode ausgelagert werden.
  3. PDF-Erstellung mit IronPDF:

    • Rendering HTML zu PDF: Verwendet ChromePdfRenderer von IronPDF zur Umwandlung des HTML-Inhalts(inhalt) in ein PDF-Dokument(pdf).

    • PDF speichern: Speichert das erzeugte PDF als "AwesomeDuckDbNet.pdf" im aktuellen Verzeichnis.

Ausgabe

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 8 - Konsolenausgabe

PDF

DuckDB C#(Wie es für Entwickler funktioniert): Abbildung 9 - PDF-Ausgabe

IronPDF-Lizenzierung

Für die Ausführung des IronPDF-Pakets ist eine Lizenz erforderlich. Fügen Sie den folgenden Code am Anfang der Anwendung ein, bevor auf das Paket zugegriffen wird.

IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Eine Testlizenz ist erhältlich unterIronPDFs Testlizenz-Seite.

Schlussfolgerung

Das DuckDB.NET C#-Paket ist ein leistungsstarkes Werkzeug zur Integration der analytischen Fähigkeiten von DuckDB in .NET-Anwendungen. Seine Benutzerfreundlichkeit, die Unterstützung verschiedener Datenformate und die nahtlose Integration in C# machen es zu einer hervorragenden Wahl für Entwickler, die an datenintensiven Anwendungen arbeiten. Egal, ob Sie Datenanalyse-Tools, ETL-Pipelines oder andere datengesteuerte Anwendungen entwickeln, DuckDB.NET hilft Ihnen, Ihre Ziele effizient zu erreichen.

< PREVIOUS
LazyCache C# (Wie es für Entwickler funktioniert)
NÄCHSTES >
WebGrease .NET Core (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,810,873 Lizenzen anzeigen >