C#

SQL DB에 대량 데이터 삽입하는 방법

검은고양이개발자 2024. 5. 13. 10:19
반응형

1. 랜덤 데이터 생성 및 CSV 파일 작성

먼저 C# 코드를 사용하여 랜덤 데이터를 생성하고 CSV 파일로 저장하는 방법을 알아봅니다.

- 테이블에는 간단하게 age, name, id 만 포함

 

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main()
    {
        Random random = new Random();

        List<string[]> dataRows = new List<string[]>();
        dataRows.Add(new string[] { "age", "name", "id" }); // CSV 헤더

        for (int i = 0; i < 100; i++)
        {
            int age = random.Next(20, 51); // 20부터 50까지의 나이
            string name = GenerateRandomName();
            string id = random.Next(10000, 100000).ToString(); // 5자리 랜덤 숫자

            dataRows.Add(new string[] { age.ToString(), name, id });
        }

        // CSV 파일로 저장
        string csvFilePath = "random_data.csv";
        using (StreamWriter writer = new StreamWriter(csvFilePath))
        {
            foreach (string[] row in dataRows)
            {
                writer.WriteLine(string.Join(",", row));
            }
        }

        Console.WriteLine("CSV 파일 생성 완료: " + csvFilePath);
    }

    // 랜덤한 영문 이름 생성
    static string GenerateRandomName()
    {
        Random random = new Random();
        const string letters = "abcdefghijklmnopqrstuvwxyz";
        char[] name = new char[5];
        for (int i = 0; i < name.Length; i++)
        {
            name[i] = letters[random.Next(letters.Length)];
        }
        return new string(name);
    }
}

 

2. CSV 파일을 SQL Server에 BULK INSERT로 삽입

C# 코드로 CSV 파일을 생성한 후, SQL Server에 BULK INSERT를 사용하여 데이터를 삽입합니다.

 

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string csvFilePath = "random_data.csv";
        string connectionString = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // BULK INSERT 쿼리 실행
            string bulkInsertQuery = $"BULK INSERT [dbo].[your_table_name] FROM '{csvFilePath}' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW = 2)";
            SqlCommand command = new SqlCommand(bulkInsertQuery, connection);
            command.ExecuteNonQuery();

            Console.WriteLine("데이터베이스에 데이터 삽입 완료.");
        }
    }
}

 

주의사항

  • YourServerName과 YourDatabaseName을 실제 SQL Server 인스턴스 및 데이터베이스 이름으로 변경해야 합니다.
  • your_table_name은 데이터를 삽입할 대상 테이블의 이름으로 변경해야 합니다.
  • FIELDTERMINATOR = ', '와 ROWTERMINATOR = '\n'은 CSV 파일의 필드 구분자와 행 구분자에 맞게 설정되어야 합니다.
반응형