Question

J'essaie d'importer un fichier .csv dans une table MySQL via phpMyAdmin .

Le fichier .csv est séparé par des canaux, formatés comme suit:

data|d'ata|d'a"ta|dat"a|
data|"da"ta|data|da't'a|
dat'a|data|da"ta"|da'ta|

Les données contiennent des guillemets. Je n'ai aucun contrôle sur le format dans lequel je reçois les données - elles sont générées par un tiers.

Le problème vient quand il y a un | suivi d'une citation double . J'ai toujours un & Quot; nombre de champs non valide en entrée CSV sur la ligne N & Quot; erreur.

Je télécharge le fichier à partir de la page d'importation en utilisant Latin1, CSV, terminé par |, séparé par "..

Je voudrais simplement changer le & "inclus dans &"; caractère , mais je continue d’obtenir & "Paramètre non valide pour l’importation au format CSV: champs entourés par &"; . J'ai essayé divers personnages sans succès.

Comment puis-je dire à MySQL d'accepter ce format dans phpMyAdmin?

La configuration de ces tables est la première étape de la rédaction d’un programme qui utilise des fichiers .csv gzippés pour gérer le catalogue d’un site de commerce électronique.

Était-ce utile?

La solution

Je rencontre un problème similaire depuis quelques heures et j'ai enfin réussi à importer une importation. Je vais donc partager ma solution, même si cela n'aidera peut-être pas l'affiche originale.

Version courte:
1.) s’il s’agit d’un fichier Excel, enregistrez-le au format ODS (Open Document Sprsheet). 1a.) Si le fichier est un format de texte avec des délimiteurs (comme l'affiche d'origine), ouvrez Excel et, une fois dans Excel, utilisez Fichier / Ouvrir pour ouvrir le fichier. Là, vous pourrez sélectionner le délimiteur approprié pour afficher le fichier. Assurez-vous que le fichier est correct, puis enregistrez-le au format ODS (et fermez le fichier).

2.) Ouvrez le fichier dans OpenOffice Calc (téléchargement gratuit à partir d'Oracle / Sun). 2a.) Appuyez sur Ctrl-F pour ouvrir la boîte de dialogue Rechercher. Cliquez sur Plus d'options et assurez-vous que & Quot; Sélection actuelle seulement & Quot; n'est pas vérifié. 2b.) Recherchez les guillemets doubles. S'il n'y en a pas dans votre fichier, vous pouvez ignorer les étapes 4 et 5.
3.) Enregistrer sous - & Gt; Texte CSV. Sélectionnez les options pour le format UTF-8 (appuyez sur & "; U &"; 3 fois pour y arriver rapidement), sélectionnez & ";;; &"; (point-virgule) comme séparateur et sélectionnez les guillemets doubles pour le texte. 4.) S'il y avait des guillemets dans votre fichier à l'étape 2b, continuez, sinon importez simplement le fichier au format CSV avec phpMyAdmin (voir l'étape 6). Ça devrait marcher. 5a.) Ouvrez dans Word ou n’importe quel autre éditeur de texte où vous pouvez faire Find - & Gt; Remplacer tout.
5b.) Recherchez toutes les occurrences de trois guillemets doubles dans une ligne en recherchant & Quot; & Quot; & Quot; (Si vous en trouvez, vous pouvez même vouloir chercher 4, 5, 6, etc. dans une rangée jusqu'à ce que vous arriviez vide). 5c.) Remplacez le & Quot; & Quot; & Quot; avec un espace réservé qui ne se trouve nulle part ailleurs dans votre CSV. Je les ai remplacés par 'abcdefg'. 5d.) Trouver - & Gt; Remplacez toutes les instances de & Quot; & Quot; (deux guillemets dans une rangée) avec \ " (barre oblique et double guillemet). 5e.) Trouver - & Gt; Remplacez toutes les instances de abcdefg (ou votre espace réservé choisi à l'étape 5c) par \ & Quot; & Quot ;. 5c et cette étape garantissent que toutes les citations apparaissant à la fin d'un champ juste avant la citation délimitant le texte sont correctement "échappées". 5f.) Enfin, sauvegardez le fichier en le conservant au format UTF-8 (ou au format que vous avez besoin d’importation). 6.a) Dans phpMyAdmin, cliquez sur le & Quot; importer & Quot; Cliquez sur l'onglet & choisir le fichier " bouton, et sélectionnez le fichier que vous venez de sauvegarder. 6b.) Sous "Format du fichier importé" CSV doit être sélectionné. Si les noms de colonne sont dans la première ligne, assurez-vous que cette case est cochée. Plus important encore, 'Les champs terminés par' doivent être réglés sur; (points-virgules), "Les champs délimités par" doivent être réglés sur " (guillemets doubles), et 'Champs échappés par' doivent être réglés sur \ (barre oblique). Vous définissez cela dans votre fichier en suivant l’étape 3 et, si nécessaire, en suivant les étapes 5a à 5f.

7.) Cliquez sur " Go " et je vous prie de ne pas perdre une heure de plus.

Maintenant que la version courte a été aussi longue, je vais ignorer la version longue.

Il suffit de dire, il semble y avoir 2 problèmes majeurs avec l'importation via phpmyadmin. 1.) Il existe un type de problème de mémoire qui empêche les fichiers Excel et ODS volumineux (quelle que soit leur taille, pas encore) d’être importés. 2.) Ni OpenOffice ni Excel ne semblent enregistrer leurs fichiers csv de manière compatible avec phpmyadmin. Ils veulent échapper aux guillemets doubles. phpMyAdmin veut que les guillemets doubles soient échappés avec autre chose, comme une barre oblique.

Nous espérons que le premier problème sera résolu dans une mise à jour de phpmyadmin (et / ou dans l'extension d'importation PHPExcel d'Excel). La seconde pourrait être corrigée s’il existait un moyen simple de changer le caractère d’échappement pour les fichiers Excel ou ODS enregistrés au format CSV, ou si phpMyAdmin pouvait être rendu compatible avec leur format (cela devrait en fait être assez facile. Il suffit de le laisser fonctionner de la même manière). Nous avons effectué les opérations manuellement ci-dessus pour contourner le problème des guillemets).

J'espère que cela aide quelqu'un,alors que je passais 3-4 heures à découvrir cette solution et une heure de plus à l'écrire ici. J'espère que ce n'est pas trop long, mais j'espérais aider les gens de tous les niveaux, de zéro à mon lieu de résidence (probablement environ 0,1).

Autres conseils

J'ai trouvé un hack qui fonctionne - j'utilise le $ comme & "; inclus dans &"; caractère et tout va bien. Puisqu'il s'agit d'un site européen, je sais qu'ils ne l'utiliseront jamais dans le contenu du tableau.

vous pouvez modifier les fichiers csv en ajoutant un \ devant tous les 'droits?

Avez-vous essayé de supprimer les cases où se trouvent " champs inclus entre " et " Les champs échappés par " Je n'ai pas utilisé phpMyAdmin, mais Google suggère d’autres ont eu du succès avec cette méthode .

Vous pourriez envisager d'écrire votre propre LOAD DATA INFILE , semble en avoir besoin de toute façon, car ce processus fera partie d'une application à un moment donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top