Znote (recipes)
  Get Znote  

🎭 Anonymize SQL Data

How to Anonymize SQL Data with Faker.js

 

🎭 Anonymize SQL Data

Easily replace sensitive customer data with randomly generated values while maintaining structure and consistency.

📌 Prerequisites

Install Faker.js to generate realistic placeholder data:

npm install --save-dev @faker-js/faker

🔄 Generate Anonymized Data and Update SQL Records

const { fakerFR: faker } = require('@faker-js/faker');

// Function to create a randomized user
function createRandomUser() {
  return {
    firstname: faker.person.firstName(),
    lastname: faker.person.lastName(),
    email: faker.internet.email(),
    phone1: faker.phone.number({ style: 'national' }).replaceAll(" ", ""),
    description: faker.lorem.sentence({ min: 1, max: 5 }),
  };
}

// Retrieve customer records
const query = "SELECT id, email, firstname, lastname, phone1, description FROM customers";
const results = await getSQL(query, "127.0.0.1", 3306, "mysql", "username", "password", "databaseName");

// Loop through records and anonymize data
let counter = 0;
for (const row of results) {
  const newUser = createRandomUser();
  const updateQuery = `
    UPDATE customers 
    SET firstname='${newUser.firstname}', 
        lastname='${newUser.lastname}', 
        phone1='${newUser.phone1}', 
        description='${newUser.description}', 
        email='${newUser.email}' 
    WHERE id=${row.id}`;
    
  await getSQL(updateQuery, "127.0.0.1", 3306, "mysql", "username", "password", "databaseName");
  
  counter++;
  if (counter % 100 === 0) {
    print(`Processed: ${counter}/${results.length}`);
  }
}

✅ What This Script Does

  • Fetches customer records from your SQL database
  • Generates randomized but realistic data
  • Updates the database with anonymized values
  • Prints progress every 100 records

Perfect for testing, development, and GDPR compliance! 🚀

Related recipes