Comment puis-je gérer les valeurs NULL dans une base de données mysql SELECT ... OUTFILE déclaration en conjonction avec FIELDS ESCAPED BY? Les valeurs NULL sont actuellement en cours tronquée

Je rencontre des difficultés à l'utilisation de MySQL SELECT ... OUTFILE sur des ensembles de résultats qui incluent à la fois les valeurs null et les colonnes qui nécessitent une double citation de s'échapper (c'est à dire, les colonnes qui contiennent des '"' caractères). C'est le outfile de syntaxe, je suis en utilisant:

INTO OUTFILE '$csv_file' 
FIELDS ESCAPED BY '""' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'

Mon problème est sur les CHAMPS s'est ÉCHAPPÉ EN partie de la requête - si cette partie est omis, les valeurs null permettra d'exporter correctement (...,"\N",... est à quoi il ressemble dans le csv).

Toutefois, les colonnes qui contiennent des guillemets doubles obtenir répartir sur plusieurs lignes/colonnes dans excel. C'est parce que excel exige que '"' caractères à l'intérieur des colonnes pour être échappé par écrit comme '""'.

Y compris les FIELDS ESCAPED BY résout le probleme excel avec des colonnes contenant des guillemets doubles, cependant, il se casse NULL colonnes. NULL colonnes exporté en tant que ( ..."N,... ) manquant à la fois de la barre oblique et le second guillemet sur la colonne. Dans excel, ce qui provoque plusieurs colonnes pour s'effondrent les uns des autres en raison de l'absence de cotation de fermeture.

Mon objectif est d'être en mesure d'exporter les colonnes qui contiennent des guillemets, et les retours à la ligne, ainsi que l'exportation null colonnes \N, mais je n'arrive pas à comprendre comment le faire. MySQL docs état qui FIELDS ESCAPED BY affecte la façon dont NULL colonnes sont éditées, mais je ne peux pas comprendre comment une séquence d'échappement de '""' résultats à l'abandon de la barre oblique inverse et la fuite de devis sur une colonne NULL

Actuellement, ma solution est de faire une chaîne de remplacer sur chaque ligne comme je l'ai sortie à l'utilisateur, en utilisant des CHAMPS ÉCHAPPÉ PAR et de remplacer "les"N" par " "\N",'. Cela semble fonctionner, mais il ne se sent pas bien, et j'ai peur de lui causer une sorte de questions en bas de la ligne

IFNULL( ) sur la sélection des colonnes est potentiellement une option, mais la façon dont nous utilisons dans notre code, est en fait assez difficile à mettre en œuvre. Il doit aussi être fait pour chaque colonne qui pourraient potentiellement avoir des valeurs NULLES, donc c'est une solution que j'aimerais éviter si je peux

Merci!

  • Par hasard, ne vous vous souvenez de la solution que vous avez utilisé pour supprimer \Ns de null valeurs lors de l'exécution de SELECT * INTO OUTFILE..?
  • C'était il y a plusieurs années maintenant, mais notre solution était simplement une chaîne de caractères de remplacement (voir mon texte ci-dessus pour les remplacements). Nous avons été à l'aide de php à l'époque, nous n'avions tout simplement les remplacer ensuite servi le résultant de remplacement avec content-type text/csv en-têtes. Il a travaillé pendant de nombreuses années (et sans doute encore des travaux... bien que je ne travaille plus dans l'entreprise où cela était nécessaire)