DuckDB C# (Comment ça marche pour les développeurs)
Jordi Bardia
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
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
Cet exemple montre comment créer une table, insérer des données et les interroger à l'aide de DuckDB.NET.
Sortie
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
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
É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
Introduction à 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 :
IronPDF est un outil pratique qui vous permet de transformer des pages web, des URL, etHTML vers PDF. La meilleure partie ? Les PDFs ressemblent exactement aux pages web originales, en conservant toute la mise en forme et le style. Donc, si vous avez besoin de créer un PDF à partir de quelque chose en ligne, comme un rapport ou une facture, IronPDF est votre référence.
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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
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.
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.
É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.
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.
Indiquez le nom du projet.
Fournir la version .NET.
Installez le paquetage IronPDF.
Installez le paquetage 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
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
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.
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.
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
PDF (EN ANGLAIS)
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
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.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT LazyCache C# (Comment ça marche pour les développeurs)
SUIVANT > WebGrease .NET Core (Comment ça marche pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier