diff --git a/crates/dbx-core/src/database_export.rs b/crates/dbx-core/src/database_export.rs index c16f55024..50ac86281 100644 --- a/crates/dbx-core/src/database_export.rs +++ b/crates/dbx-core/src/database_export.rs @@ -126,7 +126,7 @@ pub fn format_export_sql_literal(value: &Value) -> String { return if value { "TRUE" } else { "FALSE" }.to_string(); } let text = value.as_str().map_or_else(|| value.to_string(), ToString::to_string); - format!("'{}'", text.replace('\'', "''")) + format!("'{}'", text.replace('\\', "\\\\").replace('\'', "''")) } pub fn build_export_insert_statements(options: BuildExportInsertStatementsOptions) -> Result, String> { diff --git a/crates/dbx-core/src/transfer.rs b/crates/dbx-core/src/transfer.rs index a900cd548..56b2c17aa 100644 --- a/crates/dbx-core/src/transfer.rs +++ b/crates/dbx-core/src/transfer.rs @@ -106,11 +106,11 @@ pub fn escape_value_typed(val: &serde_json::Value, db_type: &DatabaseType, colum }, serde_json::Value::Number(n) => n.to_string(), serde_json::Value::String(s) => { - format!("'{}'", format_literal_string(s, db_type, column_type).replace('\'', "''")) + format!("'{}'", format_literal_string(s, db_type, column_type).replace('\\', "\\\\").replace('\'', "''")) } _ => { let s = val.to_string(); - format!("'{}'", s.replace('\'', "''")) + format!("'{}'", s.replace('\\', "\\\\").replace('\'', "''")) } } }