フッターコンテンツにスキップ
.NETヘルプ

DuckDB C#(開発者向けの仕組み)

DuckDB.NET は、C#とシームレスに統合するように設計された DuckDB ネイティブライブラリ用の .NET バインディングのオープンソースプロバイダーです。 ADO.NET プロバイダーを提供するため、.NET アプリケーションで低レベルのバインディングライブラリである DuckDB を簡単に使用できます。 このパッケージは、DuckDB の強力な分析機能を C# 環境で活用しようとしている開発者に最適です。

インストール

DuckDB.NET のインストールは簡単です。 あなたのプロジェクトに .NET CLI を使って追加できます。

dotnet add package DuckDB.NET.Data.Full
dotnet add package DuckDB.NET.Data.Full
SHELL

また、Visual StudioのNuGetパッケージマネージャー経由でインストールすることも可能です。

基本的な使用法

一度インストールしたら、DuckDB.NET を使って C# アプリケーション内で SQL クエリを実行し始めることができます。 AWS OCR と Azure OCR の比較: 図4

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)}");
        }
    }
}
$vbLabelText   $csharpLabel

この例は、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();
$vbLabelText   $csharpLabel

データフレームとの統合

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
}
$vbLabelText   $csharpLabel

ディスクへのデータ書き込み

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();
$vbLabelText   $csharpLabel

IronPDFの紹介

DuckDB C# (開発者向けの動作方法): 図2 - 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");
    }
}
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");
    }
}
$vbLabelText   $csharpLabel
  1. 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 を使用してコンソールアプリケーションを作成します。

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;
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");
        }
    }
}
$vbLabelText   $csharpLabel

コードの説明

このコードは、DuckDB.NET をデータベース操作に使用し、データベースクエリ結果を含む PDF レポートを生成するために IronPDF を使用する方法を実演することを目的としています。

キー コンポーネント

  1. 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) にフォーマットされ、コンソールに出力されます。

  1. IronPDFによるPDF生成:
    • HTML から PDF へのレンダリング: IronPDF の ChromePdfRenderer を使用して、HTML コンテンツ (content) を 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";
$vbLabelText   $csharpLabel

IronPDF の試用ライセンスページで試用ライセンスを入手できます。

結論

DuckDB.NET C#パッケージは、.NETアプリケーションに DuckDB の分析機能を統合するための強力なツールです。 その使いやすさ、さまざまなデータ形式のサポート、および C# とのシームレスな統合により、データ集約型アプリケーションに取り組む開発者にとって優れた選択肢です。 データ分析ツール、ETL パイプライン、またはその他のデータ駆動型アプリケーションを構築する場合でも、DuckDB.NET は目標を効率的に達成するのに役立ちます。

よくある質問

DuckDB.NETはC#アプリケーションでどのように使用されますか?

DuckDB.NETはC#アプリケーション内でDuckDBネイティブライブラリを統合し、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ファイルにデータをエクスポートするにはどうすればいいですか?

DuckDB.NETでは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生成機能を活用できます。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。