ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
今日のデジタル世界では、データの効率的な処理が重要な課題です。 ソフトウェア開発における一般的な要求の一つは、CSVファイルからデータを読み取り、それをデータベースに保存することです。 このチュートリアルでは、CSVファイルからデータを読み取り、C#を使ってそのデータをSQL Serverデータベースに保存する手順について説明します。IronXL ライブラリ. このガイドは初心者向けに設計されており、簡単で魅力的な方法で説明されます。
CSV(カンマ区切り値)ファイルは、カンマで区切られたデータを含むプレーンテキストファイルです。 それは、そのシンプルさとExcelのような様々なアプリケーションとの互換性のために、データ転送に人気のあるフォーマットです。
SQL Serverは、Microsoftによるデータベース管理システムです。 それはデータを構造化された方法で保存および管理するために使用されます。 今回の場合、CSVデータをSQL Serverのテーブルに格納します。
IronXLは、.NETアプリケーション向けに特化したExcelライブラリで、開発者がMicrosoft Office Interopを使用せずにExcelファイルを読み取り、生成し、編集できるように設計されています。このライブラリは、.NET Core、.NET Standard、.NET Frameworkを含むさまざまな.NETバージョンおよびプラットフォームとの互換性、ならびにWindows、Linux、macOSなどの異なるオペレーティングシステムのサポートにより際立っています。 強力なライブラリであり、特にCSVファイルの処理に役立ちます。
Visual StudioでC#コンソールプログラムを作成します。
NuGetパッケージマネージャを使用してCSVライブラリをインストールしてください。
ライブラリを使用してプログラムにCSVファイルを読み込みます。
データベースとの接続を作成します。
ライブラリを使用してCSVファイルから内容を読み取ります。
そのコンテンツをデータベースにコピーするには、SqlBulkCopy メソッドを使用します。
以下はコードスニペットの例です:
using System;
using System.Data;
using System.Data.SqlClient;
using CsvHelper;
namespace CsvReader
{
class Program
{
static void Main(string [] args)
{
string csvPath = @"path\to\your\csv\file.csv";
using (var reader = new StreamReader(csvPath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<YourModel>();
using (var sqlBulkCopy = new SqlBulkCopy("your_connection_string"))
{
sqlBulkCopy.DestinationTableName = "YourTableName";
sqlBulkCopy.WriteToServer(records.AsDataReader());
}
Console.WriteLine("Data imported successfully!");
}
}
}
}
using System;
using System.Data;
using System.Data.SqlClient;
using CsvHelper;
namespace CsvReader
{
class Program
{
static void Main(string [] args)
{
string csvPath = @"path\to\your\csv\file.csv";
using (var reader = new StreamReader(csvPath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<YourModel>();
using (var sqlBulkCopy = new SqlBulkCopy("your_connection_string"))
{
sqlBulkCopy.DestinationTableName = "YourTableName";
sqlBulkCopy.WriteToServer(records.AsDataReader());
}
Console.WriteLine("Data imported successfully!");
}
}
}
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports CsvHelper
Namespace CsvReader
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim csvPath As String = "path\to\your\csv\file.csv"
Using reader = New StreamReader(csvPath)
Using csv = New CsvReader(reader, CultureInfo.InvariantCulture)
Dim records = csv.GetRecords(Of YourModel)()
Using sqlBulkCopy As New SqlBulkCopy("your_connection_string")
sqlBulkCopy.DestinationTableName = "YourTableName"
sqlBulkCopy.WriteToServer(records.AsDataReader())
End Using
Console.WriteLine("Data imported successfully!")
End Using
End Using
End Sub
End Class
End Namespace
「path\to\your\csv\file.csv」を実際のCSVファイルのパスに、「YourModel」をCSVデータを表すモデルに、「your_connection_string」をデータベース接続文字列に、「YourTableName」をデータベーステーブルの名前に置き換えてください。
Visual Studio: Visual Studioがインストールされていることを確認してください。
SQL Server: SQL Serverがインストールされ、アクセス可能である必要があります。
Install-Package IronXL.Excel
または
dotnet add package IronXL
以下のコマンドは、IronXLをインストールしたいプロジェクトディレクトリ内で実行してください。
データをインポートする前に、SQL Serverデータベースに宛先テーブルを作成してください。 このテーブルにはCSVデータが保存されます。
CREATE TABLE YourTableName (
Column1 DataType,
Column2 DataType,
...
);
以下の YourTableName、 Column1、 Column2、および DataType は、具体的な詳細に置き換えてください。
まず、インポートしたいデータを含むCSVファイルを用意してください。
Visual Studioで新しいC#コンソールアプリケーションプロジェクトを作成します。
:installCmd Install-Package CsvHelper
using System;
using System.IO;
using CsvHelper;
using System;
using System.IO;
using CsvHelper;
Imports System
Imports System.IO
Imports CsvHelper
string csvFilePath = @"C:\path\to\your\csv\file.csv";
string csvFilePath = @"C:\path\to\your\csv\file.csv";
Dim csvFilePath As String = "C:\path\to\your\csv\file.csv"
C:\path\to\your\csv\file.csv
を実際のCSVファイルのパスに置き換えてください。
StreamReader
クラスの新しいインスタンスを作成します: using (var reader = new StreamReader(csvFilePath))
{
// code goes here
}
using (var reader = new StreamReader(csvFilePath))
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
StreamReader
オブジェクトを渡して、CsvReader
クラスの新しいインスタンスを作成します。 using (var reader = new StreamReader(csvFilePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
// code goes here
}
using (var reader = new StreamReader(csvFilePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
CsvReader
オブジェクトを設定します。 例えば: csv.Configuration.HasHeaderRecord = true;
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.HasHeaderRecord = True
using IronPdf;
var pdf = PdfDocument.FromFile("example.pdf");
var records = pdf.GetRecords<TableRecord>();
foreach (var record in records)
{
Console.WriteLine($"{record.ColumnName1}, {record.ColumnName2}");
}
using IronPdf;
var pdf = PdfDocument.FromFile("example.pdf");
var records = pdf.GetRecords<TableRecord>();
foreach (var record in records)
{
Console.WriteLine($"{record.ColumnName1}, {record.ColumnName2}");
}
Imports IronPdf
Private pdf = PdfDocument.FromFile("example.pdf")
Private records = pdf.GetRecords(Of TableRecord)()
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'foreach (var record in records)
'{
' Console.WriteLine(string.Format("{0}, {1}", record.ColumnName1, record.ColumnName2));
'}
この仕組みを使えば、PDFからのデータマイニングやレポート作成が大幅に効率化されます。CsvReader
オブジェクトのmethod
を使用して、CSVデータをオブジェクトのコレクションに読み込みます。 次の内容を日本語に翻訳して下さい:
Replace
var records = csv.GetRecords<YourModel>();
var records = csv.GetRecords<YourModel>();
Dim records = csv.GetRecords(Of YourModel)()
モデルクラスの実際の名前を YourModel
と置き換えてください。
foreach (var record in records)
{
// code goes here
}
foreach (var record in records)
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
オプションとして、ADO.NETまたはEntity FrameworkのようなORMツールを使用してSQL Serverデータベースに接続を確立します。
選択したデータベースアクセスメカニズムを使用して、各レコードをデータベースに挿入します。 例えば、ADO.NETを使用している場合、SqlBulkCopy
クラスを活用してデータを効率的に一括挿入することができます。
インポートプロセス中に発生する可能性のある例外を処理し、適切なエラーメッセージまたはログを提供します。
アプリケーションを実行して、CSVデータがデータベースに正常にインポートされていることを確認してください。
以上です! C#を使用してCSVデータをSQL Serverデータベースに正常にインポートしました。
CSVファイルからデータをインポートする作業を始める際の最初の重要なステップは、その内部のデータを正確に読み取ることです。 CSVファイルの各行は通常データレコードを表しており、各レコードはカンマで区切られた一つまたは複数のフィールドで構成されています。
次に、CSVファイルを扱うためにIronXLライブラリを使用します。IronXLを使用してCSVファイルを読み取るには、WorkBookクラスとWorkSheetクラスを使用します。 WorkBookクラスは、ExcelファイルやCSVファイルなどのすべてのスプレッドシートを表します。CSVファイルのパスをWorkBookオブジェクトにロードすると、IronXLはCSVファイルをスプレッドシートまたはデータテーブルとして扱います。
using IronXL;
public class CSVReader
{
public DataTable ReadCSV(string filePath)
{
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert to DataTable for easier processing
DataTable dataTable = sheet.ToDataTable(true); // Set to 'true' if your CSV has a header row
return dataTable;
}
}
using IronXL;
public class CSVReader
{
public DataTable ReadCSV(string filePath)
{
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert to DataTable for easier processing
DataTable dataTable = sheet.ToDataTable(true); // Set to 'true' if your CSV has a header row
return dataTable;
}
}
Imports IronXL
Public Class CSVReader
Public Function ReadCSV(ByVal filePath As String) As DataTable
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert to DataTable for easier processing
Dim dataTable As DataTable = sheet.ToDataTable(True) ' Set to 'true' if your CSV has a header row
Return dataTable
End Function
End Class
SQL Serverデータベースへの接続を確立することは、CSVデータを保存するプロセスにおいて基本的なステップです。 このステップでは、アプリケーションとデータベースサーバーとの通信リンクを設定します。 接続の成功は非常に重要です。なぜなら、接続がなければデータベースへのデータ転送が不可能になるからです。
このステップでは、C#で接続文字列を使用して接続を作成して開くことに重点を置きます。 接続文字列は、接続を確立するために必要な情報を含む重要なコンポーネントです。 それはあなたのデータベースへの扉を開ける鍵のようなものです。
public class DatabaseConnector
{
private string connectionString = "your_connection_string_here";
public SqlConnection ConnectToDatabase()
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
return connection;
}
}
public class DatabaseConnector
{
private string connectionString = "your_connection_string_here";
public SqlConnection ConnectToDatabase()
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
return connection;
}
}
Public Class DatabaseConnector
Private connectionString As String = "your_connection_string_here"
Public Function ConnectToDatabase() As SqlConnection
Dim connection As New SqlConnection(connectionString)
connection.Open()
Return connection
End Function
End Class
connectionString
変数には、SQL Server に接続するために必要なすべての詳細が含まれています。 通常は、サーバー名、データベース名、ユーザーID、およびパスワードが含まれます。 以下は接続文字列の例です:Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
。 これらのプレースホルダーを実際のサーバーの詳細に置き換えることが重要です。
SQL Serverデータベースとの接続を確立した後、次の重要なステップはCSVデータをデータベースに保存することです。 このステップでは、読み取りおよび処理したデータをSQL Serverテーブルに転送します。 それはデータ処理プロセスの重要な部分であり、ローカルファイルからデータベースサーバーへの実際のデータ移行を含みます。
このステップでは、DataTableに保存されたCSVデータがどのようにSQL Serverデータベースに転送されるかに焦点を当てます。 このタスクを効率的に達成するために、C#およびSQL Serverの機能を組み合わせて使用しています。
public class DataImporter
{
public void ImportData(DataTable dataTable)
{
using (SqlConnection connection = new DatabaseConnector().ConnectToDatabase())
{
// Check if the table exists and create it if it does not.
string tableName = "CSVData"; // Use a valid SQL table name format
string checkTable = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN ";
string createTable = "CREATE TABLE " + tableName + " (";
for (int i = 0; i < dataTable.Columns.Count; i++)
{
createTable += $"[{dataTable.Columns [i].ColumnName}] NVARCHAR(MAX)";
if (i < dataTable.Columns.Count - 1)
createTable += ", ";
}
createTable += ") END";
SqlCommand createTableCommand = new SqlCommand(checkTable + createTable, connection);
createTableCommand.ExecuteNonQuery();
// Now we use SqlBulkCopy to import the data
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Data imported successfully!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
public class DataImporter
{
public void ImportData(DataTable dataTable)
{
using (SqlConnection connection = new DatabaseConnector().ConnectToDatabase())
{
// Check if the table exists and create it if it does not.
string tableName = "CSVData"; // Use a valid SQL table name format
string checkTable = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN ";
string createTable = "CREATE TABLE " + tableName + " (";
for (int i = 0; i < dataTable.Columns.Count; i++)
{
createTable += $"[{dataTable.Columns [i].ColumnName}] NVARCHAR(MAX)";
if (i < dataTable.Columns.Count - 1)
createTable += ", ";
}
createTable += ") END";
SqlCommand createTableCommand = new SqlCommand(checkTable + createTable, connection);
createTableCommand.ExecuteNonQuery();
// Now we use SqlBulkCopy to import the data
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Data imported successfully!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
Public Class DataImporter
Public Sub ImportData(ByVal dataTable As DataTable)
Using connection As SqlConnection = (New DatabaseConnector()).ConnectToDatabase()
' Check if the table exists and create it if it does not.
Dim tableName As String = "CSVData" ' Use a valid SQL table name format
Dim checkTable As String = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN "
Dim createTable As String = "CREATE TABLE " & tableName & " ("
For i As Integer = 0 To dataTable.Columns.Count - 1
createTable &= $"[{dataTable.Columns (i).ColumnName}] NVARCHAR(MAX)"
If i < dataTable.Columns.Count - 1 Then
createTable &= ", "
End If
Next i
createTable &= ") END"
Dim createTableCommand As New SqlCommand(checkTable & createTable, connection)
createTableCommand.ExecuteNonQuery()
' Now we use SqlBulkCopy to import the data
Using bulkCopy As New SqlBulkCopy(connection)
bulkCopy.DestinationTableName = tableName
Try
bulkCopy.WriteToServer(dataTable)
Console.WriteLine("Data imported successfully!")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Using
End Sub
End Class
SQL Serverデータベースへの接続をDatabaseConnectorクラスを使用して開始し、データトランザクションの経路を確保します。 メソッドはデータベース内に「CSVData」という名前のテーブルが存在するかどうかを確認します。
テーブルが見つからない場合、作成に進みます。 テーブルのスキーマは、メソッドに渡されたDataTableスキーマに基づいて構築され、すべての列がNVARCHARに設定されます。(MAX)** 任意のテキストデータに対応するために。 これは一般的なアプローチであり、特定のデータタイプにより密接に一致させるために調整が必要な場合があります。
その後、SQL コマンドが作成され、テーブルの存在を確認するか、またはテーブルを作成するために実行されます。 これは、後続の大量コピー操作のために、データ挿入用の宛先テーブルが準備されていることを保証します。 テーブルの準備が整ったら、SqlBulkCopy クラスを使用してデータを DataTable から SQL Server テーブルに直接転送します。 この操作は高性能の大量データ転送向けに設計されており、大容量のデータを効率よく処理するのに適しています。
CSVデータの読み取り、データベース接続の確立、およびデータ転送の準備という前のステップを一生懸命にこなした後、我々は最後でかつ重要な段階に到達します:これらの個々のコンポーネントを統合して一貫性のあるプロセスにすることです。
この統合は、C#アプリケーションの Main
メソッドで行われ、すべてが一体となり、CSVファイルからSQL Serverデータベースへのデータインポートの実行を可能にします。
class Program
{
static void Main(string [] args)
{
string filePath = "path_to_your_csv_file.csv";
CSVReader reader = new CSVReader();
DataTable dataTable = reader.ReadCSV(filePath);
DataImporter importer = new DataImporter();
importer.ImportData(dataTable);
Console.WriteLine("Data imported successfully!");
}
}
class Program
{
static void Main(string [] args)
{
string filePath = "path_to_your_csv_file.csv";
CSVReader reader = new CSVReader();
DataTable dataTable = reader.ReadCSV(filePath);
DataImporter importer = new DataImporter();
importer.ImportData(dataTable);
Console.WriteLine("Data imported successfully!");
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim filePath As String = "path_to_your_csv_file.csv"
Dim reader As New CSVReader()
Dim dataTable As DataTable = reader.ReadCSV(filePath)
Dim importer As New DataImporter()
importer.ImportData(dataTable)
Console.WriteLine("Data imported successfully!")
End Sub
End Class
path_to_your_csv_file.csv
をあなたのCSVファイルのパスに置き換えてください。
プロジェクトを実行すると、以下の出力が表示されます。 成功メッセージは、すべての操作が正常に実行され、データがデータベースにコピーされたことを示しています。
Data imported successfully!
では、SQL Server Management Studio を開くことができます。(SSMS)データベースの下のテーブルを確認してください。 以下のデータがテーブルに表示されます。
このチュートリアルでは、C#を使用してCSVファイルからデータを読み取り、それをSQL Serverデータベースに格納するプロセスについて案内しました。 これらの手順に従いIronXLライブラリを利用することで、C#アプリケーションでCSVデータを効率的に管理することができます。
IronXLは、無料試用購入を決定する前に機能を体験できるように。 この完全に機能するトライアル版により、潜在的なユーザーは本番環境で透かしなしで製品をテストおよび評価することができます。 試用期間が終了した後もプロジェクトでIronXLを使用し続けることを決定した場合、製品のライセンスは$749から開始されます。
9つの .NET API製品 オフィス文書用