Partage
  • Partager sur Facebook
  • Partager sur Twitter

Incorrect format parameter

    23 octobre 2021 à 21:02:37

    Bonsoir,

    voilà j'ai récupéré un jeu de données sur data.gouv recensant la qualité de l'eau par commune etc ... et j'aimerai l'importer dans une base de donnée dans PHPMyAdmin. Le soucis est que le jeu fourni propose des fichiers .txt uniquement, autrement dit impossible à importer directement. J'ai essayé dans un premier temps de simplement changer l'extension en le ré-enregistrant en .csv. Cela a fonctionnée pour le premier qui est assez léger mais pas pour les deux autres. PHPMyAdmin me renvoie un message " Incorrect format parameter"

    J'ai essayé d'exporter les deux autres plus lourd en fichier directement avec excel mais j'ai le même problème. J'ai l'impression qu'il y a une limite de taille qui gène, j'aimerai savoir comment faire sauter cela, j'ai essayé de changer quelques trucs dans php.ini mais rien y fait, si qqun aurait une solution

    Bonne soirée;

    • Partager sur Facebook
    • Partager sur Twitter
      24 octobre 2021 à 0:17:45

      Avec PHP, tu devrais ouvrir en lecture les quelques premières lignes des 2 fichiers lourds. Chez moi, un fichier très lourd plante Excel, mais, avec Python, que j'utilise, je peux ouvrir partiellement le fichier sans freezer l'ordi.

      Ainsi, tu verras comment est organisé le fichier et tu feras les modifications nécessaire, toujours avec PHP, pour le convertir en .csv.

      Je dis PHP, mais, tu peux utiliser un langage de prog que tu maîtrises. Il suffit qu'il soit possible de faire de la lecture et écriture de fichier.

      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2021 à 19:03:35

        Mmmh , un bon sujet important, car moi aussi, il m’arrive fréquemment que mon Excel se plante, merci beaucoup @CristianoRolando

        • Partager sur Facebook
        • Partager sur Twitter
          26 octobre 2021 à 18:19:27

          ils font quelle taille tes fichiers lourds ? 

          une idée serait de les découper en un certain nombre de lignes 

          par exemple avec ce script vbs (code a copier dans un fichier texte du bloc notes et à enregistrer sous Splitme.vbs; attention à choisir "tous les fichiers (*.*)" à l'enregistrement; et ensuite glisser-déposer le fichier à couper sur le fichier vbs)

          'Copyright BenGolgoth
          'Script qui permet de découper un fichier en plusieurs fichiers de x lignes.
          
          'Utilisation :
          ' On passe le fichier à découper en paramètre du script (par un drag and drop)
          ' Le script demande alors à l'utilisateur le nombre de lignes qu'il veut par fichier et
          ' s'il y a des en-têtes (l'en-tête ne peut faire qu'une ligne).
          ' Le traitement est terminé une fois que le message de fin de traitement est apparu.
          ' Les fichiers créés ont le même nom que le fichier passé en paramètre sauf qu'ils ont
          ' un numéro juste avant l'extension.
          
          'Constantes pour l'utilisation des fichiers
          Const ForReading = 1, ForWriting = 2, SFSO = "Scripting.FileSystemObject", WSS = "Wscript.Shell"
          
          'Variables object pour les fichiers
          Dim oFSO, oFileIn, oFileOut
          
          'Numéro du fichier courant, Numéro de la ligne courante, Nombre de ligne du fichier en entrée
          Dim iCurrentFile, iCurrentLine, iNbLine
          
          'En-tête du fichier en entrée, Paramètres du script, Fichier en entrée passé en paramètre, Fichier en sortie
          Dim sHeader, sArg, sFileIn, sFileOut
          
          'Booleen qui va me permettre de savoir si le fichier contient un en-tête ou non
          Dim bHeader
          
          'Initialisation des variables
          Set oFSO = Wscript.CreateObject(SFSO)
          iCurrentFile = 1
          iCurrentLine = 1
          
          'On récupère les arguments
          Set sArg = WScript.Arguments
          
          'Il n'y a qu'un argument, c'est le fichier en entrée.
          'S'il y en a d'autres, on affiche un message d'erreur et on sort du script.
          If sArg.Count <> 1 Then
              MsgBox "Veuillez passer en paramètre le fichier à découper."
              WScript.Quit
          End If
          
          'On récupère le premier (et unique) argument.
          sFileIn = sArg(0)
          
          'On demande à l'utilisateur le nombre de lignes qu'il désire dans ses fichiers de sortie
          iNbLine = CLng(InputBox("Entrez le nombre de lignes de chaque fichier de sortie :", "CutFile",1000))
          
          'On demande à l'utilisateur s'il y a un en-tête sur la première ligne du fichier en entrée à
          'reproduire dans les fichiers en sortie (des titres de colonnes par exemple)
          bHeader = MsgBox("Le fichier passé en paramètre contient-il un en-tête à reproduire dans les fichiers de sortie ?", vbYesNo, "CutFile")
          
          'Ouverture du fichier à découper
          Set oFileIn = oFSO.OpenTextFile(sFileIn, ForReading, True)
          
          'On récupère l'en-tête du fichier s'il y a besoin
          If bHeader = vbYes Then sHeader = oFileIn.ReadLine
          
          'Ouverture du premier fichier de résultat
          Set oFileOut = oFSO.OpenTextFile(oFSO.GetParentFolderName(sFileIn) & "\\" & oFSO.GetBaseName(sFileIn) & iCurrentFile & "." & oFSO.GetExtensionName(sFileIn), ForWriting, True)
          
          'On affiche l'en-tête s'il y a besoin
          If bHeader = vbYes Then oFileOut.WriteLine sHeader
          
          'Tant qu'on n'arrive pas à la fin du fichier en entrée
          Do While Not oFileIn.AtEndOfStream
              'On copie la ligne en cours du fichier en entrée dans le fichier de sortie en cours
              oFileOut.WriteLine oFileIn.ReadLine
          
              'Si on arrive au nombre de lignes sélectionné par l'utilisateur, on ferme le fichier
              'de sortie et on ouvre le suivant
              If iCurrentLine = iNbLine Then
                  iCurrentLine = 0
                  oFileOut.Close
                  iCurrentFile = iCurrentFile + 1
                  Set oFileOut = oFSO.OpenTextFile(oFSO.GetParentFolderName(sFileIn) & "\\" & oFSO.GetBaseName(sFileIn) & iCurrentFile & "." & oFSO.GetExtensionName(sFileIn), ForWriting, True)
          
                  'On affiche l'en-tête dans le nouveau fichier de sortie s'il y besoin
                  If bHeader = vbYes Then oFileOut.WriteLine sHeader
              End If
          
              'On passe à la ligne suivante
              iCurrentLine = iCurrentLine + 1
          
          Loop
          
          'On ferme tous les fichiers
          oFileOut.Close
          oFileIn.Close
          
          'On libère la mémoire
          Set oFileIn = Nothing
          Set oFileOut = Nothing
          Set oFSO = Nothing
          
          MsgBox "Traitement terminé", vbOkOnly ,"CutFile"


          Source: https://www.developpez.net/forums/d1502877/general-developpement/programmation-systeme/windows/scripts-batch/diviser-fichier-texte-sous-windows/ 

          Il y a aussi la commande split (natif en linux et mac si je ne me trompe pas et trouvable pour windows sur https://www.exhaustif.com/Decouper-et-recoller-des-fichiers.html )

          Dans le fichier zip proposé en téléchargement,  il faut récupérer split.exe dans le sous répertoire UnxUtils.zip\usr\local\wbin ; à extraire par exemple dans le dossier du fichier à découper.

          Utilisation:

          ouvrir une invite de commande (cmd) et se déplacer dans le répertoire de split.exe; lancer la commande 

          split -l 100 fichier_a_decouper.txt decoup_

          pour découper le fichier par partie de 100 lignes en fichier commençant par decoup_

          éventuellement faire un 

          ren decoup_* decoup_*.txt

          pour remettre l'extension txt à la fin
          (à voir si il y a une 1ère ligne d'entête)

          • Partager sur Facebook
          • Partager sur Twitter

          Incorrect format parameter

          × 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