Expand description
MySQL mysqldump stream processor / mutator in Rust
This crate allows to parse and the insert values of a mysqldump file and change them on the fly. Its intended usage is to anonymize a mysqldump backup in order to safely allow to be shared between developers.
use mysqldump_mutator::{InsertContext, Parser, SQLContextType, Token};
let _ = Parser::parse_mysqldump(
BufReader::new(File::open(&file)?),
|context, token| match context {
// You can get the origial token content with token.to_string()
// Check the Token struct methods
SQLContextType::Insert(InsertContext::Value((table_name, column_index)))
if table_name == "users" && column_index == &3 =>
{
// You can change the value of the column in an inser.
// Columns are identifies by index.
Token::new(&"[REDACTED]".to_string(), Some('\''))
}
SQLContextType::ColumnDefinition((_table_name, _column_name, _column_index)) => {
// Here you can take note of what index is each column in each table.
}
_ => token, // Or just return the original token
},
|tokens| {
for token in tokens {
// Token has implemented the Display trait.
// Given that no token was replaced, this would generate an output.
// byte-by-byte equal to the input.
print!("{}", token)
}
},
);
Structs§
- Parser
- SQL Parser
Enums§
- Insert
Context - SQLContext
Type - Context given to the value handler clousure. This indicates where in the query is the parser.
- Token
- SQL Token enumeration