.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 套件管理器安裝它。

基本使用

安裝後,您可以開始使用 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文件。

    • 從網址、HTML文件或HTML字符串生成PDF。
  2. 圖像和內容轉換

    • 將圖片轉換為PDF或從PDF轉換圖片。

    • 從現有的PDF文件中提取文字和圖片。

    • 支持多種圖像格式,如JPG、PNG等。
  3. 編輯和操作

    • 設置PDF文件的屬性、安全性和權限。

    • 為PDF添加數字簽名。

    • 編輯元數據和修訂歷史。
  4. 跨平台支援

    • 支持.NET Core (8, 7, 6, 5, 和 3.1+).NET Standard (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#

試用許可證可用 這裡.

結論

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

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

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

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >