Zum Fußzeileninhalt springen
.NET HILFE

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

DuckDB.NET ist ein Open-Source-Anbieter von .NET-Bindungen für die DuckDB-native Bibliothek, entwickelt, um nahtlos mit C# zu integrieren. Es bietet einen ADO.NET-Anbieter, der es einfach macht, DuckDB, eine Bibliothek für Low-Level-Bindungen, in .NET-Anwendungen zu verwenden. Dieses Paket ist ideal für Entwickler, die die leistungsstarken Analysefähigkeiten von DuckDB in einer C#-Umgebung nutzen möchten.

Installation

Die Installation von DuckDB.NET ist unkompliziert. 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
SHELL

Alternativ können Sie es über den NuGet-Paketmanager in Visual Studio installieren.

Grundlegende Nutzung

Sobald es installiert ist, können Sie DuckDB.NET verwenden, um SQL-Abfragen innerhalb Ihrer C#-Anwendung auszuführen. Hier ist ein einfaches Beispiel:

using System;
using DuckDB.NET.Data;

class Program
{
    static void Main()
    {
        // Create and open a connection to an in-memory DuckDB database
        using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
        duckdbconnection.Open();

        // Create a command associated with the connection
        using var command = duckdbconnection.CreateCommand();
        // Create a table named 'integers'
        command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
        command.ExecuteNonQuery();

        // Insert some data into the 'integers' table
        command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
        command.ExecuteNonQuery();

        // Retrieve the count of rows in the 'integers' table
        command.CommandText = "SELECT count(*) FROM integers";
        var executeScalar = command.ExecuteScalar();

        // Select all values from the 'integers' table
        command.CommandText = "SELECT foo, bar FROM integers;";

        // Execute the query and process the results
        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()
    {
        // Create and open a connection to an in-memory DuckDB database
        using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
        duckdbconnection.Open();

        // Create a command associated with the connection
        using var command = duckdbconnection.CreateCommand();
        // Create a table named 'integers'
        command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
        command.ExecuteNonQuery();

        // Insert some data into the 'integers' table
        command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
        command.ExecuteNonQuery();

        // Retrieve the count of rows in the 'integers' table
        command.CommandText = "SELECT count(*) FROM integers";
        var executeScalar = command.ExecuteScalar();

        // Select all values from the 'integers' table
        command.CommandText = "SELECT foo, bar FROM integers;";

        // Execute the query and process the results
        using var reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine($"{reader.GetInt32(0)}, {reader.GetInt32(1)}");
        }
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel zeigt, wie man eine Tabelle erstellt, Daten einfügt und die Daten mit DuckDB.NET abfragt.

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();
$vbLabelText   $csharpLabel

Integration mit DataFrames

DuckDB.NET kann auch mit Datenrahmen integriert werden, wodurch Sie Daten mithilfe vertrauter SQL-Syntax manipulieren können. Dies ist besonders nützlich für Datenanalysetätigkeiten.

Ergebniskonvertierung

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

var results = new List<(int foo, int bar)>();

// Read and store results to a List
while (reader.Read())
{
    results.Add((reader.GetInt32(0), reader.GetInt32(1))); 
    // You can also use a loop with an index to iterate the results
}
var results = new List<(int foo, int bar)>();

// Read and store results to a List
while (reader.Read())
{
    results.Add((reader.GetInt32(0), reader.GetInt32(1))); 
    // You can also use a loop with an index to iterate the results
}
$vbLabelText   $csharpLabel

Daten auf die Festplatte schreiben

DuckDB.NET unterstützt das Schreiben von Daten in verschiedenen Formaten auf eine Festplatte. 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();
$vbLabelText   $csharpLabel

Einführung in IronPDF

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

IronPDF ist eine C# PDF-Bibliothek, mit der PDF-Dokumente in .NET-Projekten erstellt, verwaltet und Inhalte daraus extrahiert werden können. Hier sind einige wichtige Funktionen:

IronPDF ist ein praktisches Tool, das es Ihnen ermöglicht, Webseiten, URLs und HTML in PDF zu verwandeln. Das Beste daran? Die PDFs sehen exakt wie die ursprünglichen Webseiten aus – alle Formatierungen und Stile bleiben erhalten. Also, wenn Sie ein PDF aus etwas online machen müssen, wie einem Bericht oder einer Rechnung, ist IronPDF Ihr Ansprechpartner.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel
  1. HTML-zu-PDF-Konvertierung:

    • HTML-, CSS- und JavaScript-Inhalte in PDFs konvertieren.
    • Chrome-Rendering-Engine für pixelgenaue PDF-Dokumente.
    • PDFs aus URLs, HTML-Dateien oder HTML-Strings erstellen.
  2. Bild- und Inhaltskonvertierung:

    • Bilder in und aus PDF-Dokumenten konvertieren.
    • Text und Bilder aus bestehenden PDF-Dokumenten extrahieren.
    • Unterstützung für verschiedene Bildformate wie JPG, PNG usw.
  3. Bearbeitung und Manipulation:

    • Eigenschaften, Sicherheit und Berechtigungen für PDF-Dokumente festlegen.
    • Digitale Signaturen zu PDFs hinzufügen.
    • Metadaten und Versionsverlauf bearbeiten.
  4. Plattformübergreifende Unterstützung:
    • Funktioniert 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.
    • Auf NuGet für eine einfache Installation verfügbar.

PDF-Dokumente mit IronPDF und DuckDB .NET erzeugen

Erstellen Sie zunächst eine Konsolenanwendung mit Visual Studio wie unten beschrieben.

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

Geben Sie den Projektnamen an.

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

Geben Sie die .NET-Version an.

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;
using IronPdf;

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>";

            // Create and open a connection to an in-memory DuckDB database
            using var connection = new DuckDBConnection("Data Source=:memory:");
            connection.Open();
            using var command = connection.CreateCommand();

            // Create a table named 'integers'
            command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
            command.ExecuteNonQuery();
            content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";

            // Insert some data into the 'integers' table
            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>";

            // Select all values from the 'integers' table
            command.CommandText = "SELECT book, cost FROM integers;";
            using var reader = command.ExecuteReader();
            content += "<p>SELECT book, cost FROM integers;</p>";

            // Execute the query and process the results, appending them to the HTML content
            while (reader.Read())
            {
                content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
                Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
            }

            // Save data to CSV
            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();

            // Generate and save PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            pdf.SaveAs("AwesomeDuckDbNet.pdf");
        }
    }
}
using DuckDB.NET.Data;
using IronPdf;

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>";

            // Create and open a connection to an in-memory DuckDB database
            using var connection = new DuckDBConnection("Data Source=:memory:");
            connection.Open();
            using var command = connection.CreateCommand();

            // Create a table named 'integers'
            command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
            command.ExecuteNonQuery();
            content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";

            // Insert some data into the 'integers' table
            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>";

            // Select all values from the 'integers' table
            command.CommandText = "SELECT book, cost FROM integers;";
            using var reader = command.ExecuteReader();
            content += "<p>SELECT book, cost FROM integers;</p>";

            // Execute the query and process the results, appending them to the HTML content
            while (reader.Read())
            {
                content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
                Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
            }

            // Save data to CSV
            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();

            // Generate and save PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            pdf.SaveAs("AwesomeDuckDbNet.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

Code Erklärung

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

Schlüsselkomponenten

  1. DuckDB.NET:

    • DuckDBConnection: Stellt eine Verbindung zu einer im Arbeitsspeicher befindlichen DuckDB-Datenbankdatei her ("Data Source=:memory:"). Diese Verbindung wird im gesamten Code verwendet, um SQL-Befehle auszuführen.
  2. Datenbankoperationen:

    • Tabellenerstellung: Definiert einen SQL-Befehl (CREATE TABLE integers(book STRING, cost INTEGER);), um eine Tabelle namens integers mit den Spalten book (STRING) und cost (INTEGER) zu erstellen.
    • Dateneinfügung: Fügt Zeilen in die Tabelle integers ein (INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);).
    • Datenabruf: Führt eine SELECT-Abfrage (SELECT book, cost FROM integers;) aus, um Daten aus der Tabelle integers abzurufen. Die abgerufenen Daten werden in HTML (content) formatiert und auf der Konsole ausgegeben.
  3. PDF-Erstellung mit IronPDF:
    • HTML in PDF umwandeln: Verwendet ChromePdfRenderer von IronPDF, um den HTML-Inhalt (content) in ein PDF-Dokument (pdf) umzuwandeln.
    • PDF speichern: Speichert die generierte PDF-Datei 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

Das IronPDF-Paket erfordert eine Lizenz zum Betrieb. Fügen Sie den folgenden Code am Anfang der Anwendung hinzu, bevor das Paket aufgerufen wird.

IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
$vbLabelText   $csharpLabel

Eine Testlizenz ist auf IronPDF's Testlizenzseite verfügbar.

Abschluss

Das DuckDB.NET C# Paket ist ein leistungsstarkes Werkzeug zur Integration von DuckDBs Analysefähigkeiten in .NET-Anwendungen. Die Benutzerfreundlichkeit, die Unterstützung für verschiedene Datenformate und die nahtlose Integration mit C# machen es zu einer hervorragenden Wahl für Entwickler, die an datenintensiven Anwendungen arbeiten. Egal, ob Sie Datenanalysetools, ETL-Pipelines oder andere datengetriebene Anwendungen erstellen, DuckDB.NET kann Ihnen helfen, Ihre Ziele effizient zu erreichen.

Häufig gestellte Fragen

Wofür wird DuckDB.NET in C#-Anwendungen verwendet?

DuckDB.NET wird verwendet, um die native DuckDB-Bibliothek in C#-Anwendungen zu integrieren und Entwicklern leistungsstarke Analysefunktionen über einen ADO.NET-Provider bereitzustellen.

Wie kann ich DuckDB.NET in einem C#-Projekt installieren?

Sie können DuckDB.NET mit dem .NET CLI-Befehl dotnet add package DuckDB.NET.Data.Full oder über den NuGet-Paketmanager in Visual Studio installieren.

Wie führe ich SQL-Abfragen mit DuckDB.NET aus?

Sie können SQL-Abfragen mit DuckDB.NET ausführen, indem Sie eine Verbindung mit DuckDBConnection herstellen und SQL-Befehle zum Erstellen von Tabellen, Einfügen und Abrufen von Daten ausführen.

Kann DuckDB.NET das Lesen von Daten aus CSV- und Parquet-Dateien unterstützen?

Ja, DuckDB.NET unterstützt die Dateneingabe aus verschiedenen Formaten, einschließlich CSV- und Parquet-Dateien, wodurch eine nahtlose Integration und Manipulation dieser Datentypen in C#-Anwendungen möglich ist.

Wie kann ich HTML in PDF in C# konvertieren?

Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDFs zu konvertieren. Sie können auch HTML-Dateien mit RenderHtmlFileAsPdf in PDFs konvertieren.

Welche Vorteile bietet die Verwendung von DuckDB.NET für datenintensive Projekte?

DuckDB.NET bietet leistungsstarke Analysefunktionen, unterstützt SQL-basierte Datenmanipulation und lässt sich einfach in C#-Anwendungen integrieren, was es ideal für datenintensive Projekte macht.

Wie kann DuckDB.NET in Datenrahmen integriert werden?

DuckDB.NET kann in Datenrahmen integriert werden, um SQL-basierte Datenmanipulation zu ermöglichen, was besonders nützlich für die Durchführung komplexer Datenanalysen ist.

Wie exportiere ich Daten mit DuckDB.NET in eine CSV-Datei?

Sie können Daten mit DuckDB.NET mit dem COPY-Befehl in eine CSV-Datei exportieren. Verwenden Sie beispielsweise COPY integers TO 'output.csv' (FORMAT CSV);, um Tabellendaten in eine CSV-Datei zu exportieren.

Welche Plattformen unterstützt IronPDF?

IronPDF unterstützt .NET Core (8, 7, 6, 5 und 3.1+), .NET Standard (2.0+) und .NET Framework (4.6.2+) und ist mit Windows, Linux und macOS kompatibel.

Kann ich DuckDB.NET und IronPDF zur Erstellung von Berichten kombinieren?

Ja, Sie können DuckDB.NET für Datenbankoperationen und IronPDF zur Erstellung von PDF-Berichten kombinieren und damit die Datenbankfähigkeiten von DuckDB mit den PDF-Generierungsfunktionen von IronPDF nutzen.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen