Aller au contenu principal

Import et export de données

La commande d'import/export du projet Batch permet d'exporter les données d'une base vers un fichier, puis de les importer dans une autre base de données.

Cette commande utilise le projet Model pour lister les tables à exporter ainsi que la configuration définie dans le appSettings.json. Il faut donc s'assurer que le projet Model correspond à la base de données et que la chaîne de connexion est correcte.

Export des données​

Vous pouvez utiliser la commande dump suivie de l'option -e, ou --export, terminée par le chemin d'un dossier ou fichier vers lequel les données seront exportées.

monprojet dump -f -e C:\Temp\DumpBdd.zip

Anonymisation des données​

Il est recommandé de définir les règles d'anonymisation des données dans le projet Model lorsqu'on récupère un dump d'une base client, ne serait-ce que pour respecter le RGPD. Pour anonymiser les données lors de l'utilisation de la commande dump -e, il faut surcharger la méthode LoadAnonymizerRules dans votre ApplicationDbContext.

Ci-après un exemple permettant d'anonymiser les données de la table AspNetUsers lors de l'export des données :

ApplicationDbContext.cs
/// <summary>
/// Database context
/// </summary>
public class ApplicationDbContext : LgApplicationTrackedChangeDbContextGuid<ApplicationUser>
{
/// <summary>
/// Loads the set of rules used to anonymize data during data dump operations.
/// </summary>
/// <returns>The anonymization rules to apply to entities and their properties.</returns>
public override DbAnonymizerRules LoadAnonymizerRules()
{
// Les règles utilisent Bogus pour générer des valeurs réalistes sur les propriétés ciblées.
// La locale "fr" permet de produire des données au format français.
DbAnonymizerRules rules = new("fr");

// Cette règle remplace les informations nominatives des utilisateurs exportés.
rules.AddRule<ApplicationUser>((user, faker) =>
{
user.FirstName = faker.Name.FirstName();
user.LastName = faker.Name.LastName();
user.UserName = $"{user.FirstName}.{user.LastName}";
user.NormalizedUserName = user.UserName.ToUpper();
user.Email = $"{user.FirstName}.{user.LastName}@foo.invalid";
user.NormalizedEmail = user.Email.ToUpper();
});

// Retourne les règles configurées pour l'export.
return rules;
}
}

Vous pouvez ajouter de nouvelles règles en fonction des données manipulées par votre application : nom de sous-traitant, montant financier ou toute autre donnée sensible.

Import de données​

Vous pouvez utiliser la commande dump suivie de l'option -i, ou --import, terminée par le chemin du fichier qui doit être importé.

monprojet dump -i C:\Temp\DumpBdd.zip
Attention

Lors de l'import, les données de la base cible seront effacées. Vérifiez la chaîne de connexion dans votre appSettings.json avant de lancer un import.

Résumé des options de la commande dump​

OptionDescription
-e ou --exportMode export.
-i ou --importMode import.
-f ou --forceEn mode export, écrase le fichier défini s'il existe.
-na ou --no-anonymizationNe pas utiliser les règles d'anonymisation définies dans le modèle.
Argument fichierNom du fichier contenant les données à importer ou vers lequel exporter les données.

Vérifications avant exécution​

ÉtapePourquoi
Contrôler la chaîne de connexionLa commande utilise la configuration du projet Batch.
Vérifier le modèleLe projet Model sert à lister les tables à exporter.
Activer ou désactiver l'anonymisationLes dumps issus d'une base client doivent protéger les données sensibles.
Confirmer la base cible avant importL'import efface les données de la base cible.