AIDE .NET

DuckDB C# (Comment ça marche pour les développeurs)

Publié août 13, 2024
Partager:

Introduction

DuckDB.NET est un fournisseur open-source de liaisons .NET pour la bibliothèque native de DuckDB, conçues pour s'intégrer de manière transparente à C#. Il fournit un fournisseur ADO.NET, ce qui facilite l'utilisation de DuckDB, une bibliothèque de liaisons de bas niveau, dans les applications .NET. Ce package est idéal pour les développeurs qui cherchent à exploiter les puissantes capacités analytiques de DuckDB dans un environnement C#.

Installation

L'installation de DuckDB.NET est simple. Vous pouvez l'ajouter à votre projet à l'aide de l'interface de programmation .NET :

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

Vous pouvez également l'installer via le gestionnaire de paquets NuGet dans Visual Studio.

Utilisation de base

Une fois installé, vous pouvez commencer à utiliser DuckDB.NET pour exécuter des requêtes SQL dans votre application C#. Voici un exemple simple :

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#

Cet exemple montre comment créer une table, insérer des données et les interroger à l'aide de DuckDB.NET.

Sortie

DuckDB C#(Comment ça marche pour les développeurs) : Figure 1 - Sortie de la console DuckDB.NET

Ingestion de données

DuckDB.NET prend en charge la lecture des données à partir de différents formats, notamment les fichiers CSV et Parquet. Voici comment lire les données d'un fichier CSV :

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#

Intégration avec les DataFrames

DuckDB.NET peut également s'intégrer à des cadres de données, ce qui vous permet de manipuler les données à l'aide d'une syntaxe SQL familière. Ceci est particulièrement utile pour les tâches d'analyse de données.

Conversion des résultats

Vous pouvez convertir les résultats des requêtes dans différents formats, tels que des listes ou des objets personnalisés, ce qui facilite l'utilisation des données dans votre application :

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#

Écriture de données sur disque

DuckDB.NET prend en charge l'écriture de données sur le disque dans différents formats. Vous pouvez utiliser l'instruction COPY pour exporter des données vers un fichier CSV :

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#

Introduction à IronPDF

DuckDB C#(Comment ça marche pour les développeurs) : Figure 2 - IronPDF

IronPDF est une bibliothèque PDF C# qui permet la génération, la gestion et l'extraction de contenu à partir de documents PDF dans des projets .NET. En voici les principales caractéristiques :

  1. Conversion HTML en PDF :

    • Convertissez du contenu HTML, CSS et JavaScript en PDF.

    • Moteur de rendu Chrome pour des documents PDF au pixel près.

    • Générer des PDF à partir d'URL, de fichiers HTML ou de chaînes HTML.
  2. Conversion d'images et de contenus :

    • Convertissez des images depuis et vers des documents PDF.

    • Extraction de texte et d'images à partir de documents PDF existants.

    • Prise en charge de divers formats d'image tels que JPG, PNG, etc.
  3. Édition et manipulation :

    • Définir les propriétés, la sécurité et les autorisations pour les documents PDF.

    • Ajouter des signatures numériques aux PDF.

    • Modifier les métadonnées et l'historique des révisions.
  4. Support multiplateforme :

    • Fonctionne avec .NET Core(8, 7, 6, 5 et 3.1+), Standard .NET(2.0+)et le Framework .NET(4.6.2+).

    • Compatible avec Windows, Linux et macOS.

    • Disponible sur NuGet pour une installation facile.

Générer des documents PDF à l'aide d'IronPDF et de DuckDB .NET

Pour commencer, créez une application Console à l'aide de Visual Studio, comme indiqué ci-dessous.

DuckDB C#(Comment ça marche pour les développeurs) : Figure 3 - Application de la console

Indiquez le nom du projet.

DuckDB C#(Comment ça marche pour les développeurs) : Figure 4 - Configuration du projet

Fournir la version .NET.

DuckDB C#(Comment ça marche pour les développeurs) : Figure 5 - Cadre cible

Installez le paquetage IronPDF.

DuckDB C#(Comment ça marche pour les développeurs) : Figure 6 - IronPDF

Installez le paquetage DuckDB.NET.

DuckDB C#(Comment ça marche pour les développeurs) : Figure 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#

Explication du code

Le code vise à montrer comment utiliser DuckDB.NET pour les opérations de base de données et IronPDF pour générer un rapport PDF contenant les résultats de l'interrogation de la base de données.

Composants clés

  1. DuckDB.NET :

    • DuckDBConnection : Etablit une connexion à un fichier de base de données DuckDB en mémoire("Data Source=:memory :"). Cette connexion est utilisée dans tout le code pour exécuter des commandes SQL.
  2. Opérations de base de données :

    • Création de table : Définit une commande SQL(CREATE TABLE integers(livre STRING, coût INTEGER);) pour créer un tableau nommé integers avec des colonnes book(CHAÎNE) et le coût de la colonne var(INTEGER).

    • Insertion de données : Insère des lignes dans le tableau des nombres entiers(INSERT INTO integers VALUES(livre1", 25), (livre2", 30), (livre3", 10);).

    • Recherche de données : Exécute une requête SELECT(SELECT book, cost FROM integers ;) pour extraire des données du tableau des nombres entiers. Les données extraites sont formatées en HTML(contenu) et l'imprime sur la console. La fonctionnalité d'impression vers la console peut également être déplacée vers une nouvelle méthode statique privée void printqueryresults.
  3. Génération de PDF avec IronPDF :

    • Rendu du HTML au PDF : Utilise ChromePdfRenderer d'IronPDF pour convertir le contenu HTML(contenu) dans un document PDF(pdf).

    • Sauvegarde du PDF : Enregistre le PDF généré sous le nom "AwesomeDuckDbNet.pdf" dans le répertoire actuel.

Sortie

DuckDB C#(Comment ça marche pour les développeurs) : Figure 8 - Sortie de la console

PDF (EN ANGLAIS)

DuckDB C#(Comment ça marche pour les développeurs) : Figure 9 - Sortie PDF

Licences d'IronPDF

Le paquetage IronPDF nécessite une licence pour fonctionner. Ajoutez le code ci-dessous au début de l'application avant l'accès au paquet.

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

Une licence d'essai est disponible surPage de la licence d'essai d'IronPDF.

Conclusion

Le progiciel DuckDB.NET C# est un outil puissant permettant d'intégrer les capacités analytiques de DuckDB dans les applications .NET. Sa facilité d'utilisation, sa prise en charge de divers formats de données et son intégration transparente avec C# en font un excellent choix pour les développeurs travaillant sur des applications à forte intensité de données. Que vous construisiez des outils d'analyse de données, des pipelines ETL ou d'autres applications axées sur les données, DuckDB.NET peut vous aider à atteindre vos objectifs de manière efficace.

< PRÉCÉDENT
LazyCache C# (Comment ça marche pour les développeurs)
SUIVANT >
WebGrease .NET Core (Comment ça marche pour les développeurs)