IRONSOFTWAREHOME
개발자 업데이트

DuckDB C# (개발자를 위한 작동 방식)

제이콥 멜러, 팀 아이언 최고기술책임자
Jacob Mellor
Updated: 2026년 4월 23일

DuckDB.NET은 DuckDB 네이티브 라이브러리를 위한 .NET 바인딩의 오픈 소스 제공자로, C#과 원활하게 통합되도록 설계되었습니다. 이는 ADO.NET 제공자를 제공하여, .NET 애플리케이션 내에서 DuckDB라는 로우 레벨 바인딩 라이브러리를 쉽게 사용할 수 있도록 합니다. 이 패키지는 C# 환경에서 DuckDB의 강력한 분석 기능을 활용하려는 개발자들에게 이상적입니다.

설치

DuckDB.NET의 설치는 간단합니다. 다음과 같이 .NET CLI를 사용하여 프로젝트에 추가할 수 있습니다:

dotnet add package DuckDB.NET.Data.Full
SHELL

다른 방법으로, Visual Studio의 NuGet 패키지 관리자를 통해 설치할 수 있습니다.

기본 사용법

설치가 완료되면, C# 애플리케이션 내에서 DuckDB.NET을 사용하여 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 C# (개발자를 위한 작동 방식): 그림 1 - DuckDB.NET 콘솔 출력

데이터 수집

DuckDB.NET은 CSV 및 Parquet 파일을 포함한 다양한 형식의 데이터를 읽는 것을 지원합니다. 여기 CSV 파일에서 데이터를 읽는 방법이 있습니다:

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
}

디스크에 데이터 쓰기

DuckDB.NET은 다양한 형식으로 디스크에 데이터를 쓰는 것을 지원합니다. COPY 문을 사용하여 데이터를 CSV 파일로 내보낼 수 있습니다:

command.CommandText = "COPY integers TO 'output.csv' (FORMAT CSV);";
command.ExecuteNonQuery();

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

코드 설명

이 코드는 DuckDB.NET을 데이터베이스 작업에 사용하고 IronPDF를 사용하여 데이터베이스 쿼리 결과가 포함된 PDF 보고서를 생성하는 방법을 보여주려 합니다.

핵심 구성 요소

  1. DuckDB.NET:

    • DuckDBConnection: 메모리에 저장된 DuckDB 데이터베이스 파일('Data Source=:memory:')에 연결을 설정합니다. 이 연결은 SQL 명령을 실행하는 데 코드 전반에 사용됩니다.
  2. 데이터베이스 작업:

    • 테이블 생성: SQL 명령(CREATE TABLE integers(book STRING, cost INTEGER);)을 정의하여 book (STRING)과 cost (INTEGER)의 열이 있는 이름이 integers인 테이블을 생성합니다.
    • 데이터 삽입: integers 테이블에 행을 삽입합니다 (INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);).
    • 데이터 검색: SELECT 쿼리 (SELECT book, cost FROM integers;)를 실행하여 integers 테이블에서 데이터를 가져옵니다. 검색된 데이터는 HTML (content)로 형식화되어 콘솔에 출력됩니다.
  3. 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의 체험판 라이센스 페이지에서 체험판 라이센스를 사용할 수 있습니다.

결론

DuckDB.NET C# 패키지는 .NET 애플리케이션에 DuckDB의 분석 기능을 통합하기 위한 강력한 도구입니다. 사용의 용이성, 다양한 데이터 형식 지원 및 C#과의 매끄러운 통합은 데이터 중심 애플리케이션에서 작업하는 개발자에게 탁월한 선택입니다. 데이터 분석 도구, ETL 파이프라인 또는 다른 데이터 중심 애플리케이션 구축 여부에 관계없이 DuckDB.NET은 목표를 효율적으로 달성하는 데 도움이 될 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.