Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1930 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PosteGre] - Transformation colonne smallint en boolean

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PosteGre] - Transformation colonne smallint en boolean

n°2360604
Narkadaie
Posté le 25-08-2020 à 15:55:36  profilanswer
 

Bonjour,
 
Je change de SGBD entre MySQL et PostGre.
 
Pour ce faire, j'ai utilisé pgloader mais ce dernier a transformé certaine de mes tables.
 
Par exemple, je me retrouve avec une table remplie mais dont l'une des 4 colonnes est une colonne typée smallint (0 ou 1) ou lieu de Booléen (true, false)
 
J'ai donc créé une table bis avec ma colonne au bon typage booleen.
 
Le question est de savoir comment la remplir à partir de la table initiale en faisant la mise jour dans la colonne booleen; 1 = true, 0 = false ?  
 
J'ai bien fait le insert into 'nouvelle_table' (col1, col2, col3, col4) select (col1, col2, col3, col4) from 'table_intiale'
 
Mais, comme je me l'attendais, j'ai un message d'erreur "column col4 if of type boolean but expression if of type smallint"
 
Toute aide est la bienvenue.
 
Merci

mood
Publicité
Posté le 25-08-2020 à 15:55:36  profilanswer
 

n°2360660
pluj
Posté le 25-08-2020 à 17:43:14  profilanswer
 

Salut,

 

Fais juste :

Code :
  1. col4 <> 0
 

Il n'était pas nécessaire de créer une table, une colonne aurait suffit (tu droppais ensuite la colonne smallint et renommait celle en bool qui la remplaçait, ou, encore mieux, par un :

Code :
  1. ALTER TABLE table ALTER colonne TYPE BOOL USING colonne <> 0;


)


Message édité par pluj le 25-08-2020 à 17:48:10
n°2360677
Hermes le ​Messager
Breton Quiétiste
Posté le 25-08-2020 à 18:24:01  profilanswer
 

Narkadaie a écrit :

Bonjour,
 
Je change de SGBD entre MySQL et PostGre.
 
Pour ce faire, j'ai utilisé pgloader mais ce dernier a transformé certaine de mes tables.
 
Par exemple, je me retrouve avec une table remplie mais dont l'une des 4 colonnes est une colonne typée smallint (0 ou 1) ou lieu de Booléen (true, false)
 
J'ai donc créé une table bis avec ma colonne au bon typage booleen.
 
Le question est de savoir comment la remplir à partir de la table initiale en faisant la mise jour dans la colonne booleen; 1 = true, 0 = false ?  
 
J'ai bien fait le insert into 'nouvelle_table' (col1, col2, col3, col4) select (col1, col2, col3, col4) from 'table_intiale'
 
Mais, comme je me l'attendais, j'ai un message d'erreur "column col4 if of type boolean but expression if of type smallint"
 
Toute aide est la bienvenue.
 
Merci


 
Sinon, sache que c'est normal, pour MySQL, "BOOL is the synonym of TINYINT". Donc à l'export vers PostgreSQL, celui-ci voit TINYINT.


---------------
Expert en expertises
n°2360745
Narkadaie
Posté le 26-08-2020 à 10:47:21  profilanswer
 

Un grand merci à vous deux :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PosteGre] - Transformation colonne smallint en boolean

 

Sujets relatifs
Copie d'une formule sur une colonne => #NOM?[MySQL] Ajouter un nombre à une colonne null
CSS - Retour en haut de colonnemessage d'alerte après un tri sur la colonne
Afficher des valeurs d'une colonne à l'autre selon conditionEcrire une variable tableau sur une feuille avec colonne masquéees
MariaDB Requête UPDATE JSON_SET sur une colonne NULLCall to a member function execute() on boolean
Remplacer le contenu d'une colonne dans ma base de donnée SQLvérifier si valeur dans un intervalle et renvoyer une colonne
Plus de sujets relatifs à : [PosteGre] - Transformation colonne smallint en boolean


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR