.NET 帮助

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

发布 2024年八月13日
分享:

简介

DuckDB.NET 是一种开源提供商,为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#

与数据框的集成

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:将生成的 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#

试用许可证可用 这里.

结论

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

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

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

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