Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Migration SGBD Discussion :

migration et data type


Sujet :

Migration SGBD

  1. #1
    Nouveau membre du Club
    migration et data type
    Bonjour à tous,

    je vais bientôt migrer une base donnée vers une nouvelle base déjà créée. Pour me préparer à cette migration, j'ai regarder les modèles de chacunes des bases et j'ai remarqué que pour certain champs, je vais devoir placer des type varchar 8000 à varchar 4000.
    Exemple:
    actuellement, mon champs "objectif" est de type varchar(8000). Dans la nouvelle base de donnée, le champs correspondant a été déclaré comme étant de type varchar(4000).
    J'imagine donc que je vais avoir un problème de longueur. Mais est-ce que j'aurai un problème si le contenu de mon champs fais moins de 4000 caractères ? Quel serai la solution pour couper automatiquement mes valeurs si elles sont >4000.
    Aussi, un de mes champs de type int(4) va être transféré dans un type varchar(2). Est-ce possible ou va-t-il falloir faire une transformation ?

    Merci d'avance

  2. #2
    Modérateur

    Quel SGBD permet un VARCHAR(8000) ? Ou même 4000 ?

    Les objectifs sont-ils si détaillés qu'ils nécessitent une colonne aussi grosse ?

    Pour savoir si les données actuelles rentreront dans la nouvelle colonne, faire la requête suivante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(LENGTH(objectif))
    FROM la_table
    Si le résultat est inférieur à 4000, c'est bon.
    Si le résultat est très inférieur à 4000, il faudrait songer à baisser encore cette capacité.
    Si le résultat est supérieur à 4000, il faut augmenter cette nouvelle capacité.

    Aussi, un de mes champs de type int(4) va être transféré dans un type varchar(2). Est-ce possible ou va-t-il falloir faire une transformation ?
    Quelle est la raison de ce changement de type ?
    Que contient cette colonne ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Je ne sais pas quel SGBD est utilisé, pour l'instant je n'ai pu récupérer que les modèles de ces bases et malheureusement, je ne suis pas autorisée à les modifier.
    Pour ce qui est du passage du type int à varchar, je ne sais pas pourquoi ça a été décidé ainsi puisque c'est sur un champs id et qu'il s'agit tjs d'un entier.

    Merci pour cette réponse rapide en tout cas !

  4. #4
    Modérateur

    Citation Envoyé par lolilola Voir le message
    je ne suis pas autorisée à les modifier.
    C'est bien dommage parce que ce qui suit est une très mauvaise idée !
    Pour ce qui est du passage du type int à varchar, je ne sais pas pourquoi ça a été décidé ainsi puisque c'est sur un champs id et qu'il s'agit tjs d'un entier.
    Il vaudrait mieux, si ce type existe dans le SGBD, utiliser un TINYINT, codé sur 1 seul octet alors que le VARCHAR(2) est codé sur 3 octets, qui peut stocker des entiers signés jusqu'à +127.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau membre du Club
    Ok, merci beaucoup pour ton aide. Je vais voir avec mon supérieur si on peut modifier le type de l'id en question, ça m'éviteras bien des soucis.
    Encore merci

  6. #6
    Modérateur

    Tant que tu y es, parle lui aussi des VARCHAR(4000) qui sont énormes, voire transformés en type TEXT si c'est du MySQL :
    [NATIONAL] VARCHAR(M) [BINARY] Une chaîne de taille dynamique. M représente la taille maximale de la valeur dans une colonne. L'intervalle de M va de 0 à 255 caractères (1 à 255 avant MySQL 4.0.2).
    Note : les espaces terminaux sont supprimées lorsque la valeur est stockée (cela diffère des spécifications de SQL-99).
    Depuis la version 4.1.0, si la valeur M est supérieure à 255, Une colonne de type TEXT est créée. Ceci est une fonctionnalité de compatibilité. Par exemple une colonne VARCHAR(500) est convertie en TEXT, et VARCHAR(200000) est convertie en MEDIUMTEXT. Attention, cette conversion affecte la suppression des espaces finaux...
    VARCHAR est un raccourci pour CHARACTER VARYING.
    S'il résiste et si tu as besoin d'arguments, n'hésite pas à venir demander de l'aide !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !