.NET 帮助

DuckDB C#(开发人员如何使用)

发布 2024年八月13日
分享:

介绍

DuckDB.NETDuckDB 是 DuckDB 本地库 .NET 绑定的开源提供商,旨在与 C# 无缝集成。 它提供了一个 ADO.NET 提供程序,使您可以在 .NET 应用程序中轻松使用 DuckDB(一个底层绑定库)。 本软件包是希望在 C# 环境中利用 DuckDB 强大分析功能的开发人员的理想选择。

安装

安装 DuckDB.NET 非常简单。 您可以使用 .NET CLI 将其添加到您的项目中:

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

或者,您可以通过 Visual Studio 中的 NuGet 包管理器安装它。

基本用法

安装完成后,您就可以开始使用 DuckDB.NET 在 C# 应用程序中执行 SQL 查询。 下面是一个简单的例子:

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#

本示例演示如何使用DuckDB.NET创建表、插入数据并查询数据。

输出

DuckDB C#(开发者如何使用):图1 - DuckDB.NET 控制台输出

数据输入

DuckDB.NET 支持从 CSV 和 Parquet 文件等各种格式读取数据。 以下是如何从 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#

与 DataFrames 集成

DuckDB.NET 还可以与数据框架集成,让您可以使用熟悉的 SQL 语法操作数据。 这对数据分析任务尤其有用。

结果转换

您可以将查询结果转换为各种格式,如列表或自定义对象,从而方便您在应用程序中处理数据:

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#

将数据写入磁盘

DuckDB.NET 支持将各种格式的数据写入磁盘。 您可以使用 COPY 语句将数据导出为 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#

IronPDF 简介

DuckDB C#(开发人员使用指南):图2 - IronPDF

IronPDF是一个 C# PDF 库,允许在 .NET 项目中生成、管理和提取 PDF 文档中的内容。 以下是一些主要特点:

  1. HTML 转换为 PDF**:

    • 将 HTML、CSS 和 JavaScript 内容转换为 PDF。

    • Chrome 渲染引擎可生成像素级完美的 PDF 文档。

    • 从 URL、HTML 文件或 HTML 字符串生成 PDF。
  2. 图像和内容转换

    • 将图像转换为 PDF 文档或从 PDF 文档转换为图像。

    • 从现有 PDF 文档中提取文本和图像。

    • 支持各种图片格式,如 JPG、PNG 等。
  3. 编辑和处理

    • 为 PDF 文档设置属性、安全性和权限。

    • 为 PDF 添加数字签名。

    • 编辑元数据和修订历史。
  4. 跨平台支持

    • 适用于 .NET Core(8、7、6、5 和 3.1+), .NET 标准(2.0+)和 .NET Framework(4.6.2+).

    • 兼容 Windows、Linux 和 macOS。

    • 在 NuGet 上提供,便于安装。

使用 IronPDF 和 DuckDB .NET 生成 PDF 文档

首先,使用 Visual Studio 创建一个控制台应用程序,如下所示。

DuckDB C#(开发人员如何使用):图 3 - 控制台应用程序

提供项目名称。

DuckDB C#(开发人员运作方式):图 4 - 项目配置

提供 .NET 版本。

DuckDB C#(适用于开发人员的工作原理):图5 - 目标框架

安装 IronPDF 软件包。

DuckDB C#(开发人员如何使用):图6 - IronPDF

安装 DuckDB.NET 软件包。

DuckDB C#(开发人员如何使用): 图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#

代码解释

代码旨在展示如何使用 DuckDB.NET 进行数据库操作,以及如何使用 IronPDF 生成包含数据库查询结果的 PDF 报告。

关键组件

  1. DuckDB.NET

    • DuckDBConnection:建立与内存 DuckDB 数据库文件的连接("数据源=:memory:"). 该连接在整个代码中用于执行 SQL 命令。
  2. 数据库操作

    • 表创建:定义 SQL 命令(创建表 integers(书籍 STRING, 成本 INTEGER);)创建一个名为integers的表,包含列book(字符串)和 变量 column cost(整数).

    • 数据插入:在整数表中插入行(插入到整数值('book1', 25), ('book2', 30), ('book3', 10);).

    • 数据检索:执行 SELECT 查询(SELECT book, cost FROM integers;)从整数表中获取数据。 检索到的数据格式为 HTML(内容)并打印到控制台。 打印到控制台的功能也可以转移到一个新的私有静态 void printqueryresults 方法中。
  3. 使用 IronPDF 生成 PDF

    • 将 HTML 渲染成 PDF:使用 IronPDF 中的 ChromePdfRenderer 转换 HTML 内容(内容)成为 PDF 文档(PDF).

    • 保存 PDF:将生成的 PDF 保存为当前目录下的 "AwesomeDuckDbNet.pdf"。

输出

DuckDB C#(开发人员如何工作):图 8 - 控制台输出

PDF

DuckDB C#(开发人员如何使用):图9 - PDF 输出

IronPDF 许可

IronPDF 软件包需要许可证才能运行。 在访问软件包之前,在应用程序的开头添加以下代码。

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

试用许可证可在IronPDF 试用许可证页面.

结论

DuckDB.NET C# 软件包是将 DuckDB 的分析功能集成到 .NET 应用程序中的强大工具。 其易用性、对各种数据格式的支持以及与 C# 的无缝集成,使其成为开发数据密集型应用程序的开发人员的绝佳选择。 无论您是在构建数据分析工具、ETL 管道还是其他数据驱动型应用程序,DuckDB.NET 都能帮助您高效地实现目标。

< 前一页
LazyCache C#(开发人员工作原理)
下一步 >
WebGrease .NET Core(开发人员如何使用)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >