<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des mysql - SOS Linux</title>
	<atom:link href="https://www.sos-linux.com/tags/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.sos-linux.com/tags/mysql/</link>
	<description>Assistance Linux et applications open source</description>
	<lastBuildDate>Wed, 17 Jul 2024 12:55:04 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.sos-linux.com/wp-content/uploads/2021/08/cropped-Capture-decran-2021-08-23-a-19.17.20-e1629739176989-1-32x32.png</url>
	<title>Archives des mysql - SOS Linux</title>
	<link>https://www.sos-linux.com/tags/mysql/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Extraire un fichier CSV depuis un table SQL en ligne de commande</title>
		<link>https://www.sos-linux.com/extraire-un-fichier-csv-depuis-un-table-sql-en-ligne-de-commande/</link>
		
		<dc:creator><![CDATA[Benoit Nivesse]]></dc:creator>
		<pubDate>Wed, 17 Jul 2024 12:51:03 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[opensource]]></category>
		<guid isPermaLink="false">https://www.sos-linux.com/?p=19360</guid>

					<description><![CDATA[<p>Parfois, on a besoin d&#8217;extraire des informations d&#8217;une table SQL et on a pas les outils sous la main comme phpmyadmin ou Adminer. Il est bien sûr possible de faire une extraction en ligne de commande avec « mysql » mais le résultat est sous la forme de tableau difficilement utilisable dansExcel ou tout autre tableur. Alors ... <a title="Extraire un fichier CSV depuis un table SQL en ligne de commande" class="read-more" href="https://www.sos-linux.com/extraire-un-fichier-csv-depuis-un-table-sql-en-ligne-de-commande/" aria-label="En savoir plus sur Extraire un fichier CSV depuis un table SQL en ligne de commande">Lire plus</a></p>
<p>L’article <a href="https://www.sos-linux.com/extraire-un-fichier-csv-depuis-un-table-sql-en-ligne-de-commande/">Extraire un fichier CSV depuis un table SQL en ligne de commande</a> est apparu en premier sur <a href="https://www.sos-linux.com">SOS Linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Parfois, on a besoin d&rsquo;extraire des informations d&rsquo;une table SQL et on a pas les outils sous la main comme <a href="https://www.phpmyadmin.net">phpmyadmin</a> ou <a href="https://www.adminer.org">Adminer</a>.</p>



<p>Il est bien sûr possible de faire une extraction en ligne de commande avec « mysql » mais le résultat est sous la forme de tableau difficilement utilisable dansExcel ou tout autre tableur.</p>



<p>Alors voici une petite manipulation qui vous permettre facilement d&rsquo;extraire les données en utilisant la commande <strong><a href="https://man7.org/linux/man-pages/man1/sed.1p.html">sed</a></strong> :</p>



<pre class="wp-block-code"><code>
mysql &lt;arguments habituels&gt;  -e "SELECT * FROM foo" | sed '\''s/\t/";"/g;s/^/"/;s/$/"/;s/\n//g'\'' &gt; foo.csv
</code></pre>



<h2 class="wp-block-heading">Explications</h2>



<p>Dans cette commande, nous utilisons sed pour remplacer les tabulations par « ; » (s/\t/ »; »/g), le 1er caractère et le dernier par un  » ( s/^/ »/ et s/$/ »/).</p>



<p>Il est possible d&rsquo;ajouter un alias pour ne pas avoir à taper la commande sed à chaque fois (cet alias peut être ajouter au fichier .bashrc par exemple)</p>



<pre class="wp-block-code"><code>alias mysql2csv='sed '\''s/\t/","/g;s/^/"/;s/$/"/;s/\n//g'\''''</code></pre>



<p>Et on utilisera alors la commande suivante</p>



<pre class="wp-block-code"><code>
mysql &lt;arguments habituels&gt;  -e "SELECT * FROM foo" | mysql2csv &gt; foo.csv
</code></pre>



<p>Une autre solution avec la commande tr pour obtenir un fichier avec ; comme séparateur</p>



<pre class="wp-block-code"><code>mysql &lt;arguments habituels&gt;  -e "SELECT * FROM foo" | tr "\t" ";" &gt; foo.csv</code></pre>



<p>Dans cet exemple, le premier argument « \t » permet de remplacer la tabulation par « ; » dans le résultat de la requête.</p>



<p>Il est enfin possible de modifier la requête pour n&rsquo;avoir que certains colonnes de la table, ou bien même faire des requîtes plus complexes qui seront exportées en CSV.</p>



<h3 class="wp-block-heading"><strong>Astuce</strong> </h3>



<p>Ajouter l&rsquo;argument -N à la commande MySQL pour ne pas avoir le nom des colonnes dans le résultat.</p>



<h2 class="wp-block-heading">Bonus : Un exemple de script bash</h2>



<pre class="wp-block-code"><code>#!/bin/bash

# Vérifie que deux arguments sont fournis
if &#91; "$#" -ne 3 ]; then
    echo "Utilisation : $0 &lt;separateur&gt; &lt;database&gt; &lt;table_sql&gt;"
    exit 1
fi

separateur="$1"
database="$2"
table_sql="$3"

test = echo "$table_sql" | grep -q ' ';

if &#91; $test  ]; then
        echo "Le nom de la table contient des espaces"
        exit 1
fi

mysql "$database" -e "SELECT * FROM $table_sql" | tr "\t" "$separateur"

exit 0</code></pre>
<p>L’article <a href="https://www.sos-linux.com/extraire-un-fichier-csv-depuis-un-table-sql-en-ligne-de-commande/">Extraire un fichier CSV depuis un table SQL en ligne de commande</a> est apparu en premier sur <a href="https://www.sos-linux.com">SOS Linux</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
