.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の紹介

C# DuckDB(開発者のための仕組み):図2 - IronPDF

IronPDFは、.NETプロジェクトでPDF文書からのコンテンツの生成、管理、抽出を可能にするC# 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パッケージをインストールしてください。

C# DuckDB(開発者のための仕組み):図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を使用し、データベースクエリ結果を含むPDFレポートを生成するためにIronPDFを使用する方法を紹介することを目的としています。

主要コンポーネント

  1. DuckDB.NET

    • DuckDBConnection:インメモリ DuckDB データベースファイルへの接続を確立します。("データソース=:メモリ:"). この接続はSQLコマンドを実行するためにコード全体で使用される。
  2. データベース操作

    • テーブル作成:SQLコマンドの定義(CREATE TABLE integers(book STRING, cost INTEGER);)という名前のテーブルを作成する。(ストリング)とvar列のコスト(INTEGER).

    • データ挿入:整数テーブルに行を挿入する。(INSERT INTO integers VALUES(book1', 25), (book2', 30), (book3', 10);).

    • データ検索:SELECTクエリの実行(SELECT book, cost FROM integers;)を使って整数テーブルからデータを取り出す。 検索されたデータは、HTMLにフォーマットされます。(内容)とコンソールに表示される。 print-to-console機能は、新しいprivate static void printqueryresultsメソッドに移すこともできます。
  3. IronPDFによるPDF生成:

    • HTMLをPDFに変換する:IronPDFのChromePdfRendererを使用してHTMLコンテンツを変換します。(内容)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#とのシームレスな統合は、データ量の多いアプリケーションを開発する開発者に最適です。 DuckDB.NETは、データ分析ツール、ETLパイプライン、その他のデータ駆動型アプリケーションのいずれを構築する場合でも、目標を効率的に達成するのに役立ちます。

< 以前
LazyCache C# (開発者のための仕組み)
次へ >
WebGrease .NET Core (開発者のための仕組み)