Partage
  • Partager sur Facebook
  • Partager sur Twitter

Maximum import CSV

Sujet résolu
    27 avril 2017 à 9:36:15

    Bonjour,

    Je voudrais savoir si il y a un maximum de lignes/colonnes que l'on peux insérer en bdd via PHP.

    De mon côté, j'ai un fichier CSV de 3 colonnes, dés que je dépasse les 140 000 Lignes, ça plante. Si je ne dépasse pas les 140 000 lignes tout s'insèrent correctement, j'ai essayer de la jouer en SQL avec BULK INSERT ou un fgetcsv(), mais le résultat est le même. Cela fait donc 140000*3 data à insérer.

    les lignes sont identiques (au cas où ça pouvait venir du format de la lignes je voulais m'en assurer...)

    A savoir, lorsque je fais le BULK insert directement dans sql server, je peux insérer la totalité de mon fichier CSV (300 000 lignes environs)

    Je pense que cela vient d'un fichier trop lourd ? (6Mo le fichier plein) Si c'est le cas, peut-on contourner cette limite ?

    Si vous avez une petite réponse à me donner à ce sujet (y)

    -
    Edité par xeration 27 avril 2017 à 9:41:27

    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2017 à 15:59:58

      Je ne connais pas suffisamment les détails techniques du PHP pour savoir s'il existe une limite, mais je peux t'assurer de mon côté que j'ai déjà pu traiter des fichiers de plus de 40 à 50 Mo sans aucun problème. Par contre, il existe une difficulté majeure qui a mon avis est à l'origine de tes ennuis, c'est la variable PHP max_execution_time définie dans le php.ini.

      Lorsqu'un script est en cours d'exécution, même si tout se passe bien et qu'il a juste "pas fini", il s'arrêtera automatiquement au point où il en est lorsque le délai prévu sera atteint. Tu peux donc essayer d'outrepasser cette limite grâce à http://php.net/manual/fr/function.set-time-limit.php, ou alors il te faudra prévoir un mécanisme qui te permettra de commencer ou d'arrêter tes opérations à partir d'une ligne précise, afin de faire du "pas à pas", en plusieurs gros morceaux. C'est ce que j'ai fait quand j'ai été confronté au problème, la ligne en cours était envoyée dans le navigateur, et je pouvais donc facilement repérer la dernière ligne traitée, et repartir depuis la dernière ligne + 1 grâce à une condition.

      Bon courage...

      • Partager sur Facebook
      • Partager sur Twitter
      Nicolas - Développeur PHP qui bricole pas mal, utilisant Bootstrap, Materialize, MySQL et quelques astuces piochées par ci par là. Codeigniter a changé ma vie de codeur :D
        27 avril 2017 à 16:14:23

        Tu m'as mis sur la bonne piste !

        j'ai trouvé cette ligne dans le php.ini :

        post_max_size = 3M 

        je l'ai booster un peu à 128M et tout marche bien !

        • Partager sur Facebook
        • Partager sur Twitter
          27 avril 2017 à 16:21:43

          Ha, j'ai benoitement cru que le fichier csv était déjà sur le serveur ^^ Mais en effet, c'est exactement la même idée sur post_max_size. 

          Bonne suite ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Nicolas - Développeur PHP qui bricole pas mal, utilisant Bootstrap, Materialize, MySQL et quelques astuces piochées par ci par là. Codeigniter a changé ma vie de codeur :D

          Maximum import CSV

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown