AYUDA .NET

DuckDB C# (Cómo funciona para desarrolladores)

Actualizado agosto 13, 2024
Compartir:

Introducción

DuckDB.NET es un proveedor de código abierto de enlaces .NET para la biblioteca nativa DuckDB, diseñado para integrarse perfectamente con C#. Proporciona un proveedor ADO.NET, lo que facilita el uso de DuckDB, una biblioteca de bindings de bajo nivel, dentro de las aplicaciones .NET. Este paquete es ideal para desarrolladores que deseen aprovechar las potentes capacidades analíticas de DuckDB en un entorno C#.

Instalación

La instalación de DuckDB.NET es muy sencilla. Puede añadirlo a su proyecto utilizando la CLI .NET:

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

También puede instalarlo a través del gestor de paquetes NuGet en Visual Studio.

Uso básico

Una vez instalado, puede empezar a utilizar DuckDB.NET para ejecutar consultas SQL dentro de su aplicación C#. He aquí un ejemplo sencillo:

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#

Este ejemplo muestra cómo crear una tabla, insertar datos y consultar los datos utilizando DuckDB.NET.

Salida

DuckDB C# (Cómo funciona para desarrolladores): Figura 1 - Salida de la consola de DuckDB.NET

Ingesta de datos

DuckDB.NET admite la lectura de datos de varios formatos, incluidos los archivos CSV y Parquet. A continuación se explica cómo leer datos de un archivo 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#

Integración con DataFrames

DuckDB.NET también puede integrarse con marcos de datos, lo que permite manipular los datos utilizando la conocida sintaxis SQL. Esto resulta especialmente útil para las tareas de análisis de datos.

Resultado Conversión

Puede convertir los resultados de las consultas a varios formatos, como listas u objetos personalizados, lo que facilita el trabajo con los datos en su aplicación:

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#

Escritura de datos en disco

DuckDB.NET admite la escritura de datos en disco en varios formatos. Puede utilizar la sentencia COPY para exportar datos a un archivo 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#

Introducción a IronPDF

DuckDB C# (Cómo funciona para desarrolladores): Figura 2 - IronPDF

IronPDF es una biblioteca PDF en C# que permite generar, gestionar y extraer contenido de documentos PDF en proyectos .NET. Estas son algunas de sus principales características:

  1. Conversión de HTML a PDF:

    • Convierta contenidos HTML, CSS y JavaScript en PDF.

    • Motor de renderizado de Chrome para documentos PDF perfectos.
    • Genere PDF a partir de URL, archivos HTML o cadenas HTML.
  2. Conversión de imágenes y contenidos:

    • Convierte imágenes a y desde documentos PDF.

    • Extraiga texto e imágenes de documentos PDF existentes.
    • Compatible con varios formatos de imagen, como JPG, PNG, etc.
  3. Edición y manipulación:

    • Establezca propiedades, seguridad y permisos para documentos PDF.

    • Añade firmas digitales a los PDF.
    • Editar metadatos e historial de revisiones.
  4. Soporte multiplataforma:

    • Funciona con .NET Core (8, 7, 6, 5 y 3.1+.).NET Standard (2.0+)y .NET Framework (4.6.2+).

    • Compatible con Windows, Linux y macOS.
    • Disponible en NuGet para facilitar la instalación.

Generar documentos PDF usando IronPDF y DuckDB .NET

Para empezar, cree una aplicación de consola utilizando Visual Studio como se indica a continuación.

DuckDB C# (Cómo funciona para desarrolladores): Figura 3 - Aplicación de consola

Indique el nombre del proyecto.

DuckDB C# (Cómo funciona para desarrolladores): Figura 4 - Configuración del proyecto

Proporcione la versión .NET.

DuckDB C# (Cómo funciona para los desarrolladores): Figura 5 - Marco de trabajo de destino

Instale el paquete IronPDF.

DuckDB C# (Cómo funciona para desarrolladores): Figura 6 - IronPDF

Instale el paquete DuckDB.NET.

DuckDB C# (Cómo funciona para desarrolladores): Figura 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#

Código Explicación

El código pretende mostrar cómo utilizar DuckDB.NET para las operaciones con la base de datos e IronPDF para generar un informe PDF que contenga los resultados de la consulta a la base de datos.

Componentes clave

1. **DuckDB.NET**:

* **DuckDBConnection**: Establece una conexión con un archivo de base de datos DuckDB en memoria ("Fuente de datos=:memoria:"). Esta conexión se utiliza en todo el código para ejecutar comandos SQL.
  1. Operaciones de bases de datos:

    • Creación de tablas: Define un comando SQL (CREAR TABLA enteros(libro STRING, coste INTEGER);) para crear una tabla llamada enteros con columnas libro (CADENA) y el coste de la columna var (INTEGRO).

    • Inserción de datos: Inserta filas en la tabla de enteros (INSERT INTO enteros VALUES ("libro1", 25), ('libro2', 30), ('libro3', 10);).
    • Recuperación de datos: Ejecuta una consulta SELECT (SELECT libro, coste FROM enteros;) para obtener datos de la tabla de enteros. Los datos recuperados se formatean en HTML (contenido) y se imprime en la consola. La funcionalidad print-to-console también puede ser movida a un nuevo método private static void printqueryresults.
  2. Generación de PDF con IronPDF:

    • Renderización de HTML a PDF: Utiliza ChromePdfRenderer de IronPDF para convertir el contenido HTML (contenido) en un documento PDF (pdf).
    • Guardar PDF: Guarda el PDF generado como "AwesomeDuckDbNet.pdf" en el directorio actual.

Salida

DuckDB C# (Cómo funciona para desarrolladores): Figura 8 - Salida de la consola

PDF

DuckDB C# (Cómo funciona para desarrolladores): Figura 9 - Salida PDF

Licencias IronPDF

El paquete IronPDF requiere una licencia para funcionar. Añade el siguiente código al inicio de la aplicación antes de acceder al paquete.

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

Licencia de prueba disponible aquí.

Conclusión

El paquete DuckDB.NET C# es una potente herramienta para integrar las capacidades analíticas de DuckDB en aplicaciones .NET. Su facilidad de uso, su compatibilidad con diversos formatos de datos y su perfecta integración con C# lo convierten en una opción excelente para los desarrolladores que trabajan con aplicaciones de gran volumen de datos. Tanto si está creando herramientas de análisis de datos, ETL pipelines u otras aplicaciones basadas en datos, DuckDB.NET puede ayudarle a alcanzar sus objetivos de forma eficiente.

< ANTERIOR
LazyCache C# (Cómo funciona para desarrolladores)
SIGUIENTE >
WebGrease .NET Core (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,516,730 View Licenses >