DuckDB C# (Geliştiriciler İçin Nasıl Çalışır)
DuckDB.NET, C# ile sorunsuz entegrasyon sağlamak üzere tasarlanmış, .NET için DuckDB yerel kütüphanesinin .NET bağlamlarını sağlayan açık kaynaklı bir sağlayıcıdır. DuckDB'nin düşük seviyeli bağlam kütüphanesini .NET uygulamalarında kullanmayı kolaylaştıran bir ADO.NET sağlayıcısı sunar. Bu paket, DuckDB'nin güçlü analitik yeteneklerinden bir C# ortamında yararlanmak isteyen geliştiriciler için idealdir.
Kurulum
DuckDB.NET'i yüklemek oldukça basittir. .NET CLI kullanarak projenize ekleyebilirsiniz:
dotnet add package DuckDB.NET.Data.Full
dotnet add package DuckDB.NET.Data.Full
Alternatif olarak, Visual Studio'da NuGet Paket Yöneticisi aracılığıyla kurabilirsiniz.
Temel Kullanımı
Kurulumdan sonra, DuckDB.NET'i kullanarak C# uygulamanızda SQL sorguları çalıştırmaya başlayabilirsiniz. İşte basit bir örnek:
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
Bu örnek, bir tablo oluşturmanın, veri eklemenin ve DuckDB.NET kullanarak verileri sorgulamanın nasıl yapılacağını göstermektedir.
Çıktı

Veri Yükleme
DuckDB.NET, CSV ve Parquet dosyaları dahil olmak üzere çeşitli formatlardan veri okumayı destekler. İşte bir CSV dosyasından veri okumanın yolu:
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()
DataFrame'lerle Entegrasyon
DuckDB.NET ayrıca data frame'lerle entegre olabilir ve bu da tanıdık SQL söz dizimi kullanarak verileri manipüle etmenizi sağlar. Bu özellikle veri analizi görevleri için kullanışlıdır.
Sonuç Dönüştürme
Sorgu sonuçlarını listeler veya özel nesneler gibi çeşitli formatlara dönüştürebilir, böylece uygulamanızdaki verilerle kolayca çalışabilirsiniz:
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
Veriyi Diske Yazma
DuckDB.NET, veriyi çeşitli formatlarda diske yazmayı destekler. Veriyi bir CSV dosyasına aktarmak için COPY ifadesini kullanabilirsiniz:
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'ye Giriş

IronPDF, .NET projelerinizde PDF belgelerinden içerik oluşturmanızı, yönetmenizi ve çıkarmanızı sağlayan bir C# PDF kütüphanesidir. İşte bazı temel özellikler:
IronPDF, web sayfalarınızı, URL'lerinizi ve HTML'yi PDF'ye dönüştürmenizi sağlayan kullanışlı bir araçtır. En iyi kısım? PDF'ler, tüm format ve stil koruyarak, orijinal web sayfaları gibi görünür. Dolayısıyla, çevrimiçi bir şeyden, örneğin bir rapor veya fatura gibi, PDF yapmanız gerekiyorsa IronPDF sizin başvuracağınız araçtır.
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'den PDF'ye Dönüşüm:
- HTML, CSS ve JavaScript içeriğini PDF'lere dönüştürün.
- Pikselle mükemmel PDF belgeleri için Chrome Rendering Engine.
- URL'lerden, HTML dosyalarından veya HTML dizgilerinden PDF'ler üretin.
-
Görüntü ve İçerik Dönüşümü:
- PDF belgelerine ve belgelerinden görüntüleri çevirin.
- Mevcut PDF belgelerinden metin ve resimleri çıkarın.
- JPG, PNG gibi çeşitli görüntü formatları için destek.
-
Düzenleme ve Manipülasyon:
- PDF belgeleri için özellikler, güvenlik ve izinleri ayarlayın.
- PDF'lere dijital imzalar ekleyin.
- Meta verileri ve revizyon geçmişini düzenleyin.
- Çapraz Platform Desteği:
- .NET Core (8, 7, 6, 5 ve 3.1+), .NET Standard (2.0+) ve .NET Framework (4.6.2+) ile çalışır.
- Windows, Linux ve macOS ile uyumludur.
- Kolay kurulum için NuGet üzerinde mevcuttur.
IronPDF ve DuckDB .NET Kullanarak PDF Belgeleri Oluşturun
Başlangıçta, göründüğü gibi Visual Studio kullanarak bir Konsol uygulaması oluşturun.

Proje adını sağlayın.

.NET Sürümünü sağlayın.

IronPDF paketini yükleyin.

DuckDB.NET paketini yükleyin.

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
Kod Açıklaması
Kod, database işlemleri için DuckDB.NET'in nasıl kullanılacağını ve veritabanı sorgu sonuçlarını içeren bir PDF raporu oluşturmak için IronPDF'in nasıl kullanılacağını sergilemeyi amaçlamaktadır.
Temel Bileşenler
-
DuckDB.NET:
- DuckDBConnection: Bellek içi DuckDB veritabanı dosyasına bir bağlantı kurar ("Data Source=:memory:"). Bu bağlantı kod boyunca SQL komutlarını yürütmek için kullanılır.
-
Veritabanı İşlemleri:
- Tablo Oluşturma: 'book' (STRING) ve 'cost' (INTEGER) sütunlarına sahip 'integers' adında bir tablo oluşturmak için bir SQL komutunu (CREATE TABLE integers(book STRING, cost INTEGER);) tanımlar.
- Veri Ekleme: 'integers' tablosuna satır ekler (INSERT INTO integers VALUES ('book1', 25), ('book2', 30), ('book3', 10);).
- Veri Alma: 'integers' tablosundan veri almak için bir SELECT sorgusu (SELECT book, cost FROM integers;) yürütür. Alınan veriler HTML (içerik) formatında biçimlendirilir ve konsola yazdırılır.
- IronPDF ile PDF Oluşturma:
- HTML'den PDF Oluşturma: IronPDF'tan ChromePdfRenderer'ı kullanarak HTML içeriğini (içerik) bir PDF belgesine (pdf) dönüştürür.
- PDF Kaydetme: Oluşturulan PDF'i mevcut dizinde "AwesomeDuckDbNet.pdf" olarak kaydeder.
Çıktı


IronPDF Lisanslama
IronPDF paketi çalıştırmak için bir lisans gerektirir. Aşağıdaki kodu uygulamanın başlangıcında pakete erişmeden önce ekleyin.
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-KEY"
IronPDF'in deneme lisansı sayfasında bir deneme lisansı mevcuttur.
Sonuç
DuckDB.NET C# paketi, DuckDB'nin analitik yeteneklerini .NET uygulamalarına entegre etmek için güçlü bir araçtır. Kullanım kolaylığı, çeşitli veri formatlarını desteklemesi ve C# ile sorunsuz entegrasyonu, veri yoğun uygulamalar üzerinde çalışan geliştiriciler için mükemmel bir seçim yapar. Veri analizi araçları, ETL hatları veya diğer veri odaklı uygulamaları oluşturuyorsanız, DuckDB.NET hedeflerinize etkin bir şekilde ulaşmanıza yardımcı olabilir.
Sıkça Sorulan Sorular
DuckDB.NET, C# uygulamalarında ne için kullanılır?
DuckDB.NET, DuckDB yerel kütüphanesini C# uygulamalarına entegre etmek için kullanılır ve geliştiricilere ADO.NET sağlayıcısı aracılığıyla güçlü analitik yetenekler sunar.
C# projesine DuckDB.NET'i nasıl kurabilirim?
DuckDB.NET'i, .NET CLI komutu olan dotnet add package DuckDB.NET.Data.Full ile veya Visual Studio'daki NuGet Paket Yöneticisi aracılığıyla kurabilirsiniz.
DuckDB.NET kullanarak SQL sorgularını nasıl çalıştırabilirim?
DuckDB.NET kullanarak SQL sorgularını çalıştırabilirsiniz; bunun için DuckDBConnection ile bir bağlantı kurup, tablolar oluşturma, veri ekleme ve veri çekme işlemlerini yürütmek için SQL komutlarını kullanabilirsiniz.
DuckDB.NET, CSV ve Parquet dosyalarından veri okumayı destekliyor mu?
Evet, DuckDB.NET, CSV ve Parquet dosyaları gibi çeşitli formatlardan veri çekmeyi destekler, bu da bu veri türlerini C# uygulamaları içinde sorunsuz bir şekilde entegre etmenizi ve manipüle etmenizi sağlar.
HTML'yi C#'de PDF'ye nasıl dönüştürebilirim?
HTML dizgilerini PDF'lere dönüştürmek için IronPDF'nin RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca RenderHtmlFileAsPdf kullanarak HTML dosyalarının PDF'lere dönüştürülmesini de sağlayabilirsiniz.
DuckDB.NET'i veri yoğun projelerde kullanmanın faydaları nelerdir?
DuckDB.NET, güçlü analitik yetenekler sunar, SQL tabanlı veri manipülasyonunu destekler ve C# uygulamalarıyla kolayca entegre olur, bu da onu veri yoğun projeler için ideal kılar.
DuckDB.NET veri çerçeveleri ile nasıl entegre edilebilir?
DuckDB.NET, veri çerçeveleri ile entegre olabilir ve SQL tabanlı veri manipülasyonu sağlar, bu özellikle karmaşık veri analizi görevlerini gerçekleştirmek için kullanışlıdır.
DuckDB.NET kullanarak verileri bir CSV dosyasına nasıl aktarabilirim?
DuckDB.NET kullanarak verileri COPY ifadesi ile bir CSV dosyasına aktarabilirsiniz. Örneğin, COPY integers TO 'output.csv' (FORMAT CSV); ifadesini kullanarak tablo verilerini bir CSV dosyasına aktarabilirsiniz.
IronPDF hangi platformları destekler?
IronPDF, .NET Core (8, 7, 6, 5 ve 3.1+), .NET Standard (2.0+) ve .NET Framework (4.6.2+) ile uyumludur ve Windows, Linux ve macOS ile uyumludur.
Rapor oluşturmak için DuckDB.NET ve IronPDF'i birleştirebilir miyim?
Evet, DuckDB.NET'i veritabanı işlemleri ve IronPDF'i PDF raporları oluşturmak için birleştirebilirsiniz, böylece DuckDB'nin veritabanı yeteneklerini IronPDF'in PDF oluşturma özellikleriyle birleştirmiş olursunuz.




