Inserting 1 Million Dummy Product Data into SQL Server Using Bogus Package

Introduction

When working with databases, populating them with substantial amounts of data for testing or demonstration purposes is crucial. The Bogus package in C# provides a convenient way to generate fake data, making it an excellent choice for creating large sets of dummy records. This guide will walk you through inserting 1 million dummy product records into a SQL Server database using Bogus.

Step 1. Setup

Before beginning, ensure you have the following in place.

  • An SQL Server instance is installed and running.
  • A database is created where you want to insert the dummy data. Let's assume the database name is DummyDB.
  • Visual Studio or any C# development environment set up.

Step 2. Install Bogus Package

Start by installing the Bogus package into your C# project. You can use the NuGet Package Manager Console or the .NET CLI.

dotnet add package Bogus

Step 3. Define the Product Class

Create a Product the class that represents the structure of your Products table in the database.

public class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public string Description { get; set; }
    public string Category { get; set; }
}

Step 4. Generate and Insert Dummy Data

Utilize Bogus to generate and insert data into the SQL Server database.

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Bogus;

class Program
{
    static void Main()
    {
        string connectionString = "YourConnectionStringHere"; // Replace with your SQL Server connection string
        int recordsToInsert = 1000000; // Number of records to insert

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

            var bogus = new Faker<Product>()
                .RuleFor(p => p.ProductID, f => f.IndexFaker + 1)
                .RuleFor(p => p.ProductName, f => f.Commerce.ProductName())
                .RuleFor(p => p.Price, f => f.Finance.Amount(10, 1000))
                .RuleFor(p => p.Description, f => f.Lorem.Paragraph())
                .RuleFor(p => p.Category, f => f.Commerce.Categories(1)[0]);

            var products = bogus.Generate(recordsToInsert);

            using (var transaction = connection.BeginTransaction())
            {
                var insertQuery = "INSERT INTO Products (ProductID, ProductName, Price, Description, Category) VALUES (@ProductID, @ProductName, @Price, @Description, @Category)";
                
                foreach (var product in products)
                {
                    using (var command = new SqlCommand(insertQuery, connection, transaction))
                    {
                        command.Parameters.AddWithValue("@ProductID", product.ProductID);
                        command.Parameters.AddWithValue("@ProductName", product.ProductName);
                        command.Parameters.AddWithValue("@Price", product.Price);
                        command.Parameters.AddWithValue("@Description", product.Description);
                        command.Parameters.AddWithValue("@Category", product.Category);

                        command.ExecuteNonQuery();
                    }
                }

                transaction.Commit();
            }
        }

        Console.WriteLine("Data insertion complete.");
    }
}

Step 5. Execution

Replace "YourConnectionStringHere" with your SQL Server connection string. Run the application, and it will use Bogus to generate 1 million dummy product records and insert them into your Products table within the DummyDB database.

Conclusion

Bogus simplifies the generation of fake data, enabling the insertion of a large number of dummy records into a SQL Server database. This method allows for efficient testing, development, or demonstration scenarios without the need for manually creating extensive datasets.


Similar Articles