<?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></title>
	<atom:link href="http://dam1en.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://dam1en.fr</link>
	<description></description>
	<lastBuildDate>Wed, 22 Dec 2010 15:04:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Import CSV vers MySQL</title>
		<link>http://dam1en.fr/2010/12/11/csv-to-mysql/</link>
		<comments>http://dam1en.fr/2010/12/11/csv-to-mysql/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 13:22:54 +0000</pubDate>
		<dc:creator>Dam1en</dc:creator>
				<category><![CDATA[CSV]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dam1en.fr/?p=4</guid>
		<description><![CDATA[Importer en PHP un fichier CSV de plusieurs GO vers une base de données MySQL ]]></description>
			<content:encoded><![CDATA[<p>Voici un moyen<strong> d&#8217;importer un fichier CSV volumineux</strong> vers une base de données<strong> MySQL </strong>tout en évitant de se retrouver avec le message d&#8217;erreur suivant :<br />
<span style="color: #ff6600;"> &laquo;&nbsp;Fatal error: Allowed memory size of 27340032 bytes exhausted (tried to allocate 5472 bytes)&nbsp;&raquo;.</span></p>
<p>Vous dépassez tout simplement la taille de la mémoire physique ou allouée par votre serveur.<br />
Il est possible de modifier la valeur de la mémoire allouée par le serveur à l&#8217;aide de cette fonction:</p>
<pre class="brush: php; title: ; notranslate">ini_set(&quot;memory_limit&quot;,'2000M');</pre>
<p>Mais si votre serveur ne possède qu&#8217; un Go de mémoire RAM et que votre <strong>CSV fait 2 Go</strong>, il vous faut une autre méthode.<br />
La solution suivante permet d’enregistrer à la volée chaque ligne du CSV et donc de ne pas saturer la mémoire en chargeant le fichier en cache.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	set_time_limit( 24 * 60 * 60 ); // Temps d'execution du script = 24H
	$ptr = fopen( $chemin_complet_fichier_csv, 'r' ); //Ouvrir le fichier csv
	for ($ligne = fgetcsv($ptr, 1024,';'); !feof($ptr); $ligne = fgetcsv($ptr, 1024,';'))  // Parcourir chaque ligne du fichier CSV
	{
		$mes_donnees['value1'] = $ligne[1]; //récupère la seconde occurrence après le séparateur
		$mes_donnees['value2'] = $ligne[2];
		$mes_donnees['value3'] = $ligne[3];

                //Requête SQL qui insère les données de la ligne
		$requete = &quot;INSERT INTO maTable (`tb1 ,`tb2` ,`tb3` )
					VALUES ('&quot;.$mes_donnees['value1'].&quot;', '&quot;.$mes_donnees['value2'].&quot;', '&quot;.$mes_donnees['value3'].&quot;')&quot;;
	}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://dam1en.fr/2010/12/11/csv-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

