2011-09-14 1 views
1

Je cherche à passer à la mise en forme de la sortie produite par la commande mysqldump de la manière suivante:Changer le séparateur de données de la colonne sur la sortie de mysqldump

(data_val1,data_val2,data_val3,...) 

à

(data_val1|data_val2|data_val3|...) 

Le changement ici étant un délimiteur différent. Cela me permettrait alors de (en python) analyser les lignes de données en utilisant une commande line.split ("|") et finir avec les valeurs correctement séparées (par opposition à faire line.split (",") et avoir des valeurs qui contenir des virgules séparées en plusieurs valeurs).

J'ai essayé d'utiliser l'option --fields-terminated-by, mais cela nécessite l'utilisation de l'option --tab. Je ne veux pas utiliser l'option --tab car elle divise la sauvegarde en plusieurs fichiers. Est-ce que quelqu'un sait comment modifier le délimiteur que mysqldump utilise?

Répondre

0

Ce n'est pas une bonne idée. Au lieu d'utiliser string.split() en Python, utilisez the csv module pour analyser correctement les données CSV, qui peuvent être placées entre guillemets et peuvent avoir des codes internes , qui ne sont pas des délimiteurs. Les fichiers de vidage MySQL sont destinés à être utilisés comme entrée dans MySQL. Si vous voulez vraiment une sortie délimitée par des tuyaux, utilisez plutôt l'option SELECT INTO OUTFILE syntax avec l'option FIELDS TERMINATED BY '|'.

+0

Malheureusement, cela ne va pas pour moi. La base de données mysql est sur un autre serveur que celui dont j'ai besoin pour exécuter mon script. En tant que tel SELECT INTO OUTFILE ne fonctionnera pas. Aussi, comme ma question l'indique, je cherche à modifier la sortie produite par mysqldump pour changer le délimiteur afin que les valeurs des colonnes soient délimitées différemment, mais les valeurs contenant des virgules qui ne sont pas des délimiteurs ne sont pas modifiées. – paradox870

+0

@ paradox870 J'obtiens ça - c'est là qu'intervient le module csv Python. Il sera capable d'analyser la sortie mysqldump délimitée par des virgules sans avoir besoin de modifier les délimiteurs –

+0

Encore une fois, cela nécessite l'accès aux fichiers sur le même serveur que le mysql base de données - que je n'ai pas. – paradox870

Questions connexes