DuckDB C#(對開發者如何理解的工作)
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
另外,您也可以透過 Visual Studio 中的 NuGet Package Manager 進行安裝。
基本用法
安裝完成後,您就可以開始使用 DuckDB.NET 在您的 C# 應用程式中執行 SQL 查詢。 下面是一個簡單的例子:
using System;
using DuckDB.NET.Data;
class Program
{
static void Main()
{
// Create and open a connection to an in-memory DuckDB database
using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
duckdbconnection.Open();
// Create a command associated with the connection
using var command = duckdbconnection.CreateCommand();
// Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
command.ExecuteNonQuery();
// Insert some data into the 'integers' table
command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
command.ExecuteNonQuery();
// Retrieve the count of rows in the 'integers' table
command.CommandText = "SELECT count(*) FROM integers";
var executeScalar = command.ExecuteScalar();
// Select all values from the 'integers' table
command.CommandText = "SELECT foo, bar FROM integers;";
// Execute the query and process the results
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()
{
// Create and open a connection to an in-memory DuckDB database
using var duckdbconnection = new DuckDBConnection("Data Source=:memory:");
duckdbconnection.Open();
// Create a command associated with the connection
using var command = duckdbconnection.CreateCommand();
// Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
command.ExecuteNonQuery();
// Insert some data into the 'integers' table
command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
command.ExecuteNonQuery();
// Retrieve the count of rows in the 'integers' table
command.CommandText = "SELECT count(*) FROM integers";
var executeScalar = command.ExecuteScalar();
// Select all values from the 'integers' table
command.CommandText = "SELECT foo, bar FROM integers;";
// Execute the query and process the results
using var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"{reader.GetInt32(0)}, {reader.GetInt32(1)}");
}
}
}
Imports System
Imports DuckDB.NET.Data
Friend Class Program
Shared Sub Main()
' Create and open a connection to an in-memory DuckDB database
Dim duckdbconnection As New DuckDBConnection("Data Source=:memory:")
duckdbconnection.Open()
' Create a command associated with the connection
Dim command = duckdbconnection.CreateCommand()
' Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);"
command.ExecuteNonQuery()
' Insert some data into the 'integers' table
command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);"
command.ExecuteNonQuery()
' Retrieve the count of rows in the 'integers' table
command.CommandText = "SELECT count(*) FROM integers"
Dim executeScalar = command.ExecuteScalar()
' Select all values from the 'integers' table
command.CommandText = "SELECT foo, bar FROM integers;"
' Execute the query and process the results
Dim reader = command.ExecuteReader()
Do While reader.Read()
Console.WriteLine($"{reader.GetInt32(0)}, {reader.GetInt32(1)}")
Loop
End Sub
End Class
本範例示範如何使用 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();
command.CommandText = "COPY integers FROM 'example.csv' (FORMAT CSV)"
command.ExecuteNonQuery()
與 DataFrames 整合。
DuckDB.NET 也可以與資料框架整合,讓您使用熟悉的 SQL 語法來操作資料。 這對資料分析工作特別有用。
結果轉換
您可以將查詢結果轉換成各種格式,例如清單或自訂物件,讓您可以輕鬆地在應用程式中處理資料:
var results = new List<(int foo, int bar)>();
// Read and store results to a List
while (reader.Read())
{
results.Add((reader.GetInt32(0), reader.GetInt32(1)));
// You can also use a loop with an index to iterate the results
}
var results = new List<(int foo, int bar)>();
// Read and store results to a List
while (reader.Read())
{
results.Add((reader.GetInt32(0), reader.GetInt32(1)));
// You can also use a loop with an index to iterate the results
}
Dim results = New List(Of (foo As Integer, bar As Integer))()
' Read and store results to a List
Do While reader.Read()
results.Add((reader.GetInt32(0), reader.GetInt32(1)))
' You can also use a loop with an index to iterate the results
Loop
將資料寫入磁碟
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();
command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV)"
command.ExecuteNonQuery()
IronPDF 簡介

IronPDF 是一個 C# PDF 函式庫,允許在 .NET 專案中產生、管理和擷取 PDF 文件中的內容。 以下是一些主要特點:
IronPDF 是一款方便的工具,可讓您將網頁、URL 和 HTML 轉換成 PDF。 最棒的是什麼? PDF 的外觀必須與原始網頁完全相同 - 保留所有格式與樣式。 因此,如果您需要將線上的東西製作成 PDF,例如報告或發票,IronPDF 就是您的最佳選擇。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
- HTML 轉 PDF:
- 將 HTML、CSS 及 JavaScript 內容轉換為 PDF。
- Chrome Rendering Engine 可提供像素完美的 PDF 文件。
- 從 URL、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 建立一個 Console 應用程式,如下所示。

提供專案名稱。

提供 .NET 版本。

安裝 IronPDF 套件。

安裝 DuckDB.NET 套件。

using DuckDB.NET.Data;
using IronPdf;
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>";
// Create and open a connection to an in-memory DuckDB database
using var connection = new DuckDBConnection("Data Source=:memory:");
connection.Open();
using var command = connection.CreateCommand();
// Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
command.ExecuteNonQuery();
content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";
// Insert some data into the 'integers' table
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>";
// Select all values from the 'integers' table
command.CommandText = "SELECT book, cost FROM integers;";
using var reader = command.ExecuteReader();
content += "<p>SELECT book, cost FROM integers;</p>";
// Execute the query and process the results, appending them to the HTML content
while (reader.Read())
{
content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
}
// Save data to CSV
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();
// Generate and save PDF
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("AwesomeDuckDbNet.pdf");
}
}
}
using DuckDB.NET.Data;
using IronPdf;
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>";
// Create and open a connection to an in-memory DuckDB database
using var connection = new DuckDBConnection("Data Source=:memory:");
connection.Open();
using var command = connection.CreateCommand();
// Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);";
command.ExecuteNonQuery();
content += "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>";
// Insert some data into the 'integers' table
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>";
// Select all values from the 'integers' table
command.CommandText = "SELECT book, cost FROM integers;";
using var reader = command.ExecuteReader();
content += "<p>SELECT book, cost FROM integers;</p>";
// Execute the query and process the results, appending them to the HTML content
while (reader.Read())
{
content += $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>";
Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}");
}
// Save data to CSV
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();
// Generate and save PDF
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("AwesomeDuckDbNet.pdf");
}
}
}
Imports DuckDB.NET.Data
Imports IronPdf
Namespace CodeSample
Public Module DuckDbDemo
Public Sub Execute()
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
Dim content = "<h1>Demo DuckDb and IronPDF</h1>"
content &= "<h2>Create DuckDBConnection</h2>"
content &= "<p>new DuckDBConnection(""Data Source=:memory:"");</p>"
content &= "<p></p>"
' Create and open a connection to an in-memory DuckDB database
Dim connection = New DuckDBConnection("Data Source=:memory:")
connection.Open()
Dim command = connection.CreateCommand()
' Create a table named 'integers'
command.CommandText = "CREATE TABLE integers(book STRING, cost INTEGER);"
command.ExecuteNonQuery()
content &= "<p>CREATE TABLE integers(book STRING, cost INTEGER);</p>"
' Insert some data into the 'integers' table
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>"
' Select all values from the 'integers' table
command.CommandText = "SELECT book, cost FROM integers;"
Dim reader = command.ExecuteReader()
content &= "<p>SELECT book, cost FROM integers;</p>"
' Execute the query and process the results, appending them to the HTML content
Do While reader.Read()
content &= $"<p>{reader.GetString(0)}, {reader.GetInt32(1)}</p>"
Console.WriteLine($"{reader.GetString(0)}, {reader.GetInt32(1)}")
Loop
' Save data to CSV
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()
' Generate and save PDF
Dim pdf = renderer.RenderHtmlAsPdf(content)
pdf.SaveAs("AwesomeDuckDbNet.pdf")
End Sub
End Module
End Namespace
程式碼解釋
此程式碼旨在展示如何使用 DuckDB.NET 進行資料庫操作,以及如何使用 IronPDF 產生包含資料庫查詢結果的 PDF 報告。
主要元件
- DuckDB.NET:
- DuckDBConnection:建立與記憶體中的 DuckDB 資料庫檔案("資料來源=:memory:")的連線。 整個程式碼中都會使用此連線來執行 SQL 指令。
2.資料庫操作: *建立表格:*定義一個 SQL 指令(CREATE TABLE integers(book STRING, cost INTEGER);)來建立一個名為 integers 的表,其中包含 book(STRING)和 cost(INTEGER)欄位。 資料插入:**向整數表中插入行(INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);)。 *資料擷取:執行 SELECT 查詢(SELECT book, cost FROM integers;)從整數表中取得資料。 擷取的資料會格式化為 HTML (內容),並列印至控制台。
3.使用 IronPDF 產生 PDF: *將 HTML 渲染為 PDF:*使用 IronPDF 中的 ChromePdfRenderer 將 HTML 內容(內容)轉換為 PDF 文件(pdf)。 儲存 PDF:**將產生的 PDF 儲存為目前目錄中的"AwesomeDuckDbNet.pdf"。
輸出

PDF。

IronPDF 授權。
IronPDF 套件需要授權才能執行。 在存取套件之前,在應用程式的開頭加入以下程式碼。
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-KEY"
IronPDF的試用授權頁面提供試用授權。
結論
DuckDB.NET C# 套件是將 DuckDB 的分析功能整合至 .NET 應用程式的強大工具。 其易用性、對各種資料格式的支援,以及與 C# 的無縫整合,使其成為開發資料密集應用程式的開發人員的絕佳選擇。 無論您是要建立資料分析工具、ETL 管道或其他資料驅動的應用程式,DuckDB.NET 都能幫助您有效率地達成目標。
常見問題解答
DuckDB.NET 在 C# 應用程式中有什麼用途?
DuckDB.NET 用於整合 DuckDB 原生庫至 C# 應用程式中,透過 ADO.NET 提供強大的分析能力給開發者。
如何在 C# 專案中安裝 DuckDB.NET?
您可以透過 .NET CLI 命令 dotnet add package DuckDB.NET.Data.Full 或在 Visual Studio 中透過 NuGet 套件管理員安裝 DuckDB.NET。
如何使用 DuckDB.NET 執行 SQL 查詢?
您可以建立與 DuckDBConnection 的連線,並執行 SQL 命令來建立表格、插入及檢索資料。
DuckDB.NET 能支援從 CSV 和 Parquet 檔案讀取資料嗎?
是的,DuckDB.NET 支援從包括 CSV 和 Parquet 檔案在內的多種格式進行資料攝取,允許在 C# 應用程式中無縫整合和操作這些資料類型。
怎樣在 C# 中將 HTML 轉換為 PDF?
您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。
使用 DuckDB.NET 在資料密集的專案中有哪些優點?
DuckDB.NET 提供強大的分析能力,支援基於 SQL 的資料操作,並能與 C# 應用程式輕鬆整合,對於資料密集的專案極為理想。
DuckDB.NET 如何與資料框架整合?
DuckDB.NET 可以與資料框架整合,支持基於 SQL 的資料操作,這對於執行複雜的資料分析任務特別有用。
如何使用 DuckDB.NET 將資料匯出為 CSV 檔案?
您可以使用 COPY 語句將資料匯出為 CSV 檔案。例如,使用 COPY integers TO 'output.csv' (FORMAT CSV); 將表格資料匯出為 CSV 檔案。
IronPDF 支持哪些平台?
IronPDF 支援 .NET Core (8, 7, 6, 5 和 3.1+)、.NET Standard (2.0+)和 .NET Framework (4.6.2+),並且與 Windows、Linux 和 macOS 相容。
我可以結合 DuckDB.NET 和 IronPDF 來生成報告嗎?
是的,您可以將 DuckDB.NET 用於資料庫操作,將 IronPDF 用於生成 PDF 報告,利用 DuckDB 的資料庫功能結合 IronPDF 的 PDF 生成特性。



