Extra barre oblique inverse \ lorsque SELECT ... INTO OUTFILE ... dans MySQL
Donc j'essaye d'exporter une table MySQL dans un fichier CSV. Je suis l'aide de cette requête:
SELECT * FROM business WHERE id > 0 AND id <= 20000 INTO OUTFILE "business.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n";
Que la sortie de quelque chose comme ceci:
http://postimage.org/image/2ghyenh5w/full/
Le problème, c'est qu'il y a toujours un supplément de barre oblique inverse \ où il y a un saut de ligne comme dans le champ d'adresse.
Cependant, CSV exporté à partir de phpMyAdmin ne l'a pas:
http://postimage.org/image/2gi026tno/full/
Toute façon de faire de la SÉLECTION ... OUTFILE ... faire la même chose?
La table, je fais face à a 20 millions d'enregistrements, phpMyAdmin ne peut gérer qu'environ 500 000 enregistrements pour chaque action d'exportation - ou il sera vide ou serveur mysql disparu, etc.
puis-je avoir un regard sur votre extrait de le faire? 😉 Ce sont les fuites? Que faire si il y a " et , dans le contenu? Comment prendre soin de caractères UTF8?
OriginalL'auteur datasn.io | 2011-03-11
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Je pense que le problème est que MySQL est en essayant de s'échapper de retour à la ligne ('\n') dans vos champs de texte parce que c'est votre terminaison de ligne.
(MySQL)
Je ne comprends vraiment pas pourquoi il fait ce qu'il fait dans votre cas, mais j'ai été en mesure d'obtenir quelque chose comme ça sur mon Mac et la requête ci-dessus semblait fixer la sortie dans mon cas.
Espère que ça aide!
fields terminated by "," OPTIONALLY ENCLOSED BY "\"" escaped by "\"" LINES TERMINATED BY "\n"
OriginalL'auteur mattexx
Il semble qu'il est impossible pour une base de données MySql à l'exportation correctement à l'exportation à la fois des retours à la ligne et des Citations.
Lors de l'exportation, MySql automatiquement échapper à la fois
Par défaut, le caractère d'échappement est une barre oblique inverse. Vous pouvez remplacer cela par l'ajout de ÉCHAPPÉ PAR " à votre requête.
Malheureusement, dans un "normal" (compatible avec Excel) fichier CSV, vous voulez probablement les codages différents pour les sauts de ligne et des citations. Plus précisément, vous voulez des retours à la ligne à être sans échappement, et des citations d'être doublé.
E. g. Si une valeur contient un saut de ligne comme:
il devrait devenir
La solution que j'ai trouvé était à pré-échapper les guillemets, et ajouter ÉCHAPPÉ PAR " (une chaîne vide) à ma requête.
OriginalL'auteur James Beninger
J'ai eu le même problème, et j'ai découvert (après l'importation du fichier csv dans un tableur) qu'il y avait des sauts de ligne dans certains champs varchar dans la table MySQL. Après la suppression des sauts de ligne, l'exportation a fonctionné correctement.
OriginalL'auteur Torsten
Essayez ceci:
J'ai réalisé à l'aide d'
escaped by '\'
rend supprime la barre oblique inverse à l'exportation des résultats.OriginalL'auteur Morfat Mosoti
Obtenu une réponse ici https://bugs.mysql.com/bug.php?id=46434
Principaux points sont les suivants:
1. INTO OUTFILE est destiné à produire des résultats prêts à charger en CHARGE des DONNÉES
2. Par défaut ÉCHAPPÉ PAR"\''
3. Pour désactiver l'évasion, utiliser ÉCHAPPÉ PAR "
OriginalL'auteur NoAngel
J'ai résolu ce problème en spécifiant
\r\n
comme le terminateur de ligne, plutôt que de\n
:Chaque ligne est maintenant séparé par
\r\n
, mais tous les retours à la ligne à l'intérieur de vos données sera laissé sans échappement – en supposant que la ligne de séparateurs présents y sont tous\n
, pas\r\n
.Étonnamment, cela a bien fonctionné sur Linux pour mes fins de l'importation à l'aide de Ligue\Csv (PHP). Je devine que quel que soit le logiciel sera importation de vos généré CSVs doit être assez intelligent pour différencier entre
\n
et\r\n
pour les sauts de ligne.OriginalL'auteur Illya Moskvin
Tout d'abord, ne pas mettre
'""
que l'évasion, cela va changer votre contenu.Deuxième, si vous utilisez cette requête sur un cli ci-dessous, vous devez également la distance supplémentaire
'\n'
ajouter une ligne avec plusieurs lignes.OriginalL'auteur heronmb