
DuckDB C#(開発者向けの仕組み)
DuckDB.NET は、C#とシームレスに統合するように設計された DuckDB ネイティブライブラリ用の .NET バインディングのオープンソースプロバイダーです。 ADO.NET プロバイダーを提供するため、.NET アプリケーションで低レベルのバインディングライブラリである DuckDB を簡単に使用できます。 このパッケージは、DuckDB の強力な分析機能を C# 環境で活用しようとしている開発者に最適です。
インストール
DuckDB.NET のインストールは簡単です。 あなたのプロジェクトに .NET CLI を使って追加できます。
dotnet add package DuckDB.NET.Data.Full
また、Visual StudioのNuGetパッケージマネージャー経由でインストールすることも可能です。
基本的な使用法
一度インストールしたら、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)}");
}
}
}
この例は、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()データフレームとの統合
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
}
ディスクへのデータ書き込み
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()IronPDFの紹介

IronPDF は、.NET プロジェクトでの PDF ドキュメントの生成、管理、およびコンテンツの抽出を可能にする C# 用 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");
}
}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 に変換します。
- ピクセル パーフェクトな PDF ドキュメントのための Chrome レンダリング エンジン。
- URL、HTML ファイル、または HTML 文字列から PDF を生成します。
2.画像とコンテンツの変換:
- 画像を 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 を使用してコンソールアプリケーションを作成します。

プロジェクト名を入力します。

.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");
}
}
}
コードの説明
このコードは、DuckDB.NET をデータベース操作に使用し、データベースクエリ結果を含む PDF レポートを生成するために IronPDF を使用する方法を実演することを目的としています。
キー コンポーネント
- DuckDB .NET:
- **DuckDBConnection:**メモリ内の DuckDB データベース ファイルへの接続を確立します ("Data Source=:memory:")。 この接続は SQL コマンドを実行するためにコード全体で使用されます。
2.データベース操作: *テーブルの作成: SQL コマンド (CREATE TABLE integers(book STRING, cost INTEGER);) を定義して、book (STRING) 列と cost (INTEGER) 列を持つ integers という名前のテーブルを作成します。 ***データの挿入:**整数テーブルに行を挿入します (INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);)。 *データ取得: SELECT クエリ (SELECT book, cost FROM integers;) を実行して、整数テーブルからデータを取得します。 取得したデータは HTML (content) にフォーマットされ、コンソールに出力されます。
- IronPDFによるPDF生成:
- HTML から PDF へのレンダリング: IronPDFの ChromePdfRenderer を使用して、HTML コンテンツ (content) を PDF ドキュメント (pdf) に変換します。
- **PDF の保存:**生成された PDF を現在のディレクトリに"AwesomeDuckDbNet.pdf"として保存します。
出力


IronPDFのライセンス
IronPDF パッケージは実行するためにライセンスが必要です。 パッケージにアクセスする前にアプリケーションの冒頭に以下のコードを追加してください。
IronPdf.License.LicenseKey = "IRONPDF-KEY";Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-KEY"IronPDF の試用ライセンスページで試用ライセンスを入手できます。
結論
DuckDB.NET C#パッケージは、.NETアプリケーションに DuckDB の分析機能を統合するための強力なツールです。 その使いやすさ、さまざまなデータ形式のサポート、および C# とのシームレスな統合により、データ集約型アプリケーションに取り組む開発者にとって優れた選択肢です。 データ分析ツール、ETL パイプライン、またはその他のデータ駆動型アプリケーションを構築する場合でも、DuckDB.NET は目標を効率的に達成するのに役立ちます。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


