IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

 MySQL Discussion :

Comment importer des NULL dans mysql ?


Sujet :

MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 15
    Par défaut Comment importer des NULL dans mysql ?
    Salut

    Quel est le moyen qui occupera le moins d'espace disque dans un fichier texte pour que la valeur NULL soit importée telle quelle ?

    J'ai 300000 lignes et 75 colonnes et énormément de valeurs NULL soit 4 caractères à chaque fois... J'ai presque 60% de NULL dans mon fichier.

    Y a t il une astuce ?

    J'utilise :

    mysqlimport --lines-terminated-by="\r\n" --delete -L -ulogin -ppassword -v -hmysql5-1.bdb base matable.tab

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Ca dépend du formalisme de ton fichier: comment sont délimitées les valeurs ?

    Regarde du coté de ces options :
    --fields-enclosed-by=..., --fields-optionally-enclosed-by=...
    --fields-terminated-by=string

    Cf. http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

    Selon tout ça, au lieu d'avoir
    ,NULL,val1,NULL,
    ,,val1,,
    suffira pour autant que le délimiteur soit la virgule.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 15
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Ca dépend du formalisme de ton fichier: comment sont délimitées les valeurs ?

    Regarde du coté de ces options :
    --fields-enclosed-by=..., --fields-optionally-enclosed-by=...
    --fields-terminated-by=string

    Cf. http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
    Pour l'instant, mes valeurs sont délimitées par des tabulations (\t).

    J'ai déjà regardé la syntaxe de mysqlimport mais je n'ai pas trouvé mon bonheur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 15
    Par défaut
    J'ai trouvé çà :

    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    Handling of NULL values varies according to the FIELDS and LINES options in use:

    *

    For the default FIELDS and LINES values, NULL is written as a field value of \N for output, and a field value of \N is read as NULL for input (assuming that the ESCAPED BY character is “\”).
    *

    If FIELDS ENCLOSED BY is not empty, a field containing the literal word NULL as its value is read as a NULL value. This differs from the word NULL enclosed within FIELDS ENCLOSED BY characters, which is read as the string 'NULL'.
    *

    If FIELDS ESCAPED BY is empty, NULL is written as the word NULL.
    *

    With fixed-row format (which is used when FIELDS TERMINATED BY and FIELDS ENCLOSED BY are both empty), NULL is written as an empty string. Note that this causes both NULL values and empty strings in the table to be indistinguishable when written to the file because both are written as empty strings. If you need to be able to tell the two apart when reading the file back in, you should not use fixed-row format.

    An attempt to load NULL into a NOT NULL column causes assignment of the implicit default value for the column's data type and a warning, or an error in strict SQL mode. Implicit default values are discussed in Section 10.1.4, “Data Type Default Values”.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 15
    Par défaut
    J'ai finalement trouvé une solution en mettant \N (2 caractères au lieu de 4 pour NULL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqlimport --lines-terminated-by="\r\n"  --fields-terminated-by="," --delete -L -ulogin -ppassword -v -hserveur base nomtable.csv
    avec un fichier csv de la forme :

    1,\N,416416
    452452,4456,\N

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/08/2012, 18h25
  2. Comment insérer un NULL dans Mysql
    Par jacko842 dans le forum VB.NET
    Réponses: 5
    Dernier message: 09/04/2010, 16h27
  3. comment importer des données dans une table paradox
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/08/2007, 18h32
  4. Réponses: 7
    Dernier message: 23/01/2006, 11h53
  5. Importer des données grace a des *.cvs dans MySQL
    Par Mic0001 dans le forum Installation
    Réponses: 3
    Dernier message: 05/01/2005, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo