.NET 幫助

DuckDB C#(對開發人員的運作方式)

發佈 2024年8月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 套件管理器安裝它。

基本用法

安裝完成後,您可以開始在 C# 應用程式中使用 DuckDB.NET 執行 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。

    • 用於像素完美PDF文件的Chrome渲染引擎。

    • 從 URLs、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 資料庫檔案的連接("Data Source=:memory:"). 此連接在整個程式碼中用於執行 SQL 命令。
  2. 資料庫操作

    • 表格創建:定義一條 SQL 命令(創建表 integers(書籍 STRING,成本 INTEGER);)建立一個名為integers的表格,包含book列(字符串)和 var column cost(整數).

    • 資料插入:將行插入整數表中(插入進 integers 值('書本1', 25), ('book2', 30), ('book3', 10);).

    • 資料檢索:執行SELECT查詢(選擇 book, cost 從 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#

試用許可證可在IronPDF 的試用授權頁面.

結論

DuckDB.NET C# 套件是一個強大的工具,可以將 DuckDB 的分析能力整合到 .NET 應用程式中。 它易於使用,支持多種數據格式,並且能流暢地與 C# 集成,使其成為開發數據密集型應用程式的開發人員的絕佳選擇。 無論您是在構建數據分析工具、ETL 管道還是其他數據驅動應用程式,DuckDB.NET 都能幫助您高效達成目標。

< 上一頁
LazyCache C#(它如何為開發者工作)
下一個 >
WebGrease .NET Core(開發人員如何使用)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >