2 votes

pgloader peut-il exclure des colonnes spécifiques dans une table MySQL ?

J'utilise un fichier de chargement avec pgloader et il y a une table particulièrement problématique dans ma base de données MySQL avec des dates mal formées. Je souhaite ignorer cette colonne lors de la migration. Comment puis-je faire cela dans un fichier de chargement ? Quelque chose comme :

LOAD DATABASE 
    FROM mysql://root@localhost/mydb 
    INTO postgresql:///mypgdb
    INCLUDING ONLY TABLE NAMES MATCHING 
    'Table_with_Datetimes_Column' AS dt,
    'My_Other_Table'
    EXCLUDING dt.Malformed_Column
;

2voto

Dimitri Fontaine Points 171

Vous pouvez exclure entièrement la table problématique, puis migrer les données à partir d'une vue, en utilisant la clause MATERIALIZING VIEW de la commande load. Définissez donc d'abord une vue au-dessus de votre table dans laquelle vous omettez la colonne problématique, puis

exclude table name matching 'Table_with_Datetimes_Column'
materialize views 'v_Table_without_Datetimes_Column'

Voir les exemples dans le répertoire test dans le dépôt pour pgloader, en particulier celui de sakila.load : https://github.com/dimitri/pgloader/blob/master/test/sakila.load

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X