Last active
July 3, 2025 00:39
-
-
Save nad2000/6067f9682d371b142237bb1052b4221e to your computer and use it in GitHub Desktop.
Obfuscate email addrsses in a clone of a production data base
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Create email list: | |
WITH v AS (SELECT | |
'SELECT ' || C.COLUMN_NAME || ', left(' || C.COLUMN_NAME || ', 1)||left(md5(' || C.COLUMN_NAME || '), 16)||''@mailinator.com'' FROM ' || C.TABLE_NAME || CASE | |
WHEN (ROW_NUMBER() OVER ()) = 1 THEN '' | |
ELSE ' UNION ' | |
END AS st | |
FROM | |
INFORMATION_SCHEMA.COLUMNS AS C | |
WHERE | |
C.COLUMN_NAME ~ 'email' | |
AND C.DATA_TYPE ~ 'character' | |
AND C.TABLE_SCHEMA = 'public' | |
AND C.TABLE_NAME != 'obfuscated_email' | |
ORDER BY | |
ROW_NUMBER() OVER () DESC, | |
C.COLUMN_NAME) | |
SELECT 'DROP TABLE IF EXISTS obfuscated_email; CREATE TABLE obfuscated_email(email, new_email) AS ' | |
UNION ALL | |
SELECT st FROM v | |
UNION ALL | |
SELECT ';'; | |
-- Obfuscate data: | |
SELECT | |
'UPDATE '||C.table_name||' AS t SET '||C.column_name||' = s.new_email FROM obfuscated_email AS s WHERE s.email=t.'||C.column_name||';' | |
FROM | |
INFORMATION_SCHEMA.COLUMNS AS C | |
WHERE | |
C.COLUMN_NAME ~ 'email' | |
AND C.DATA_TYPE ~ 'character' | |
AND C.TABLE_SCHEMA = 'public' | |
AND C.TABLE_NAME != 'obfuscated_email'; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment