<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.slacky.eu/wikislack/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
		<id>http://www.slacky.eu/wikislack/index.php?title=Convertitore_csv_mysql&amp;feed=atom&amp;action=history</id>
		<title>Convertitore csv mysql - Cronologia</title>
		<link rel="self" type="application/atom+xml" href="http://www.slacky.eu/wikislack/index.php?title=Convertitore_csv_mysql&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.slacky.eu/wikislack/index.php?title=Convertitore_csv_mysql&amp;action=history"/>
		<updated>2013-06-19T07:29:35Z</updated>
		<subtitle>Cronologia della pagina su questo sito</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>http://www.slacky.eu/wikislack/index.php?title=Convertitore_csv_mysql&amp;diff=4334&amp;oldid=prev</id>
		<title>Slacky il 15:48, 21 ott 2007</title>
		<link rel="alternate" type="text/html" href="http://www.slacky.eu/wikislack/index.php?title=Convertitore_csv_mysql&amp;diff=4334&amp;oldid=prev"/>
				<updated>2007-10-21T15:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Script]]&lt;br /&gt;
= Descrizione =&lt;br /&gt;
Converte un file csv (comma separated values), preventivamente ottenuto da un foglio elettronico, in una tabella mysql.&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
Prima di operare la conversione a .csv di un foglio elettronico,&lt;br /&gt;
è bene operare alcune modifiche sullo stesso, che valgono universalmente&lt;br /&gt;
(indipendentemente, quindi, dall'azione specifica dello script):&lt;br /&gt;
&lt;br /&gt;
* il foglio dovrebbe essere strutturato come un database;&lt;br /&gt;
* non devono esserci celle unite;&lt;br /&gt;
* non devono esserci righe saltate, con titoli o roba simile;&lt;br /&gt;
* dopo essersi annotate le etichette, togliere la riga delle intestazioni.&lt;br /&gt;
&lt;br /&gt;
PRIMA DI LANCIARE LO SCRIPT, INSERIRE NELLO STESSO LE CREDENZIALI MYSQL!&lt;br /&gt;
= Download =&lt;br /&gt;
http://www.slacky.eu/misto/concorso/ninobi/csv2mysql&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.slacky.eu/misto/concorso/ninobi/csv2mysql.php&lt;br /&gt;
= Script csv2mysql =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
#  csv2mysql 0.7.10.4 - php-aid&lt;br /&gt;
#  ----------------------------&lt;br /&gt;
#  converte un file csv (comma separated values), preventivamente&lt;br /&gt;
#+ ottenuto da un foglio elettronico, in una tabella mysql.&lt;br /&gt;
#  ----------------------------&lt;br /&gt;
#  ninobi (Antonino Branca) - aschenaz@gmail.com&lt;br /&gt;
#  2007 - copyleft&lt;br /&gt;
#&lt;br /&gt;
#################### CONFIGURAZIONE DELLO SCRIPT #########################&lt;br /&gt;
#&lt;br /&gt;
# CONFIGURAZIONE MYSQL (OBBLIGATORIA)&lt;br /&gt;
#&lt;br /&gt;
HO=&amp;quot;localhost&amp;quot;  # host mysql&lt;br /&gt;
US=&amp;quot;&amp;quot;           # utente mysql&lt;br /&gt;
PAW=''          # password mysql&lt;br /&gt;
# -------------------------------------------------------------&lt;br /&gt;
# CONFIGURAZIONE CAMPO IDENTIFICATIVO TABELLA (FACOLTATIVA)&lt;br /&gt;
#&lt;br /&gt;
IDEN=&amp;quot;ID mediumint(8)&amp;quot;&lt;br /&gt;
#--------------------------------------------------------------&lt;br /&gt;
# CONFIGURAZIONE TIPI CAMPO MYSQL (FACOLTATIVA)&lt;br /&gt;
# puoi aggiungerne altri, facendo attenzione alla sintassi...&lt;br /&gt;
#&lt;br /&gt;
TIPI=( 'tinyint(3) unsigned' 'mediumint(8) unsigned' 'decimal(8,2) unsigned' 'varchar(255)' 'text' )&lt;br /&gt;
#&lt;br /&gt;
####################### FINE CONFIGURAZIONE ##############################&lt;br /&gt;
if [ $# -lt 3 ]; then&lt;br /&gt;
	echo &amp;quot;*********************************************************&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                                                       *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                 Mancano parametri!                    *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                                                       *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                Devi lanciarlo così:                   *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                                                       *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*   ./csv2mysql nomedatabase nometabella nomefilecsv    *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*                                                       *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*********************************************************&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
fi&lt;br /&gt;
DAB=&amp;quot;$1&amp;quot;&lt;br /&gt;
INDIR=&amp;quot;$PWD&amp;quot;&lt;br /&gt;
FILECSV=&amp;quot;$INDIR/$3&amp;quot;&lt;br /&gt;
MYOPDIR=&amp;quot;.csv2mysql&amp;quot;&lt;br /&gt;
INIFS=&amp;quot;$IFS&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
cd $HOME&lt;br /&gt;
if [[ $HO = &amp;quot;&amp;quot;  ||  $US = &amp;quot;&amp;quot;  ||  $DAB = &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
	echo &amp;quot;*********************************************&amp;quot;&lt;br /&gt;
	echo &amp;quot;*      Devi prima configurare lo script     *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*         inserendo i dati di mysql...      *&amp;quot;&lt;br /&gt;
	echo &amp;quot;*********************************************&amp;quot;&lt;br /&gt;
	cd $INDIR&lt;br /&gt;
	exit 1&lt;br /&gt;
fi&lt;br /&gt;
#&lt;br /&gt;
echo &amp;quot;**************************************************************************&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;csv2mysql - Partecipante al I concorso di bash-scripting - Slacky.eu 2007&amp;quot;&lt;br /&gt;
echo &amp;quot;-------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
echo &amp;quot;Questo script permette una semplice conversione di un file .csv (comma&amp;quot;&lt;br /&gt;
echo &amp;quot;separated values), preventivamente ottenuto da un foglio elettronico, in&amp;quot;&lt;br /&gt;
echo &amp;quot;una tabella mysql, che e' anche possibile creare adesso al volo.&amp;quot;&lt;br /&gt;
echo &lt;br /&gt;
echo &amp;quot;Per quanto riguarda il foglio elettronico, ricorda: tutte le righe devono&amp;quot;&lt;br /&gt;
echo &amp;quot;essere omogenee (niente righe saltate o irregolari, niente celle unite)&amp;quot;&lt;br /&gt;
echo &amp;quot;e la riga delle intestazioni DEVE essere tolta (ricordandosi di annmotare&amp;quot;&lt;br /&gt;
echo &amp;quot;le voci da inserire eventualmente come campi della tabella).&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;**************************************************************************&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
read -p &amp;quot;La tabella $2 esiste già nel database $1? (s/n) ==&amp;gt; &amp;quot; SN1&lt;br /&gt;
if [[ $SN1 != &amp;quot;s&amp;quot; &amp;amp;&amp;amp;  $SN1 != &amp;quot;n&amp;quot; ]]; then&lt;br /&gt;
	echo &amp;quot;Devi rispondere o 's' o 'n'...&amp;quot;&lt;br /&gt;
	cd $INDIR&lt;br /&gt;
	exit 1&lt;br /&gt;
elif [ $SN1 = &amp;quot;n&amp;quot; ]; then&lt;br /&gt;
	echo &amp;quot;-----------------------------------------------------------------------&amp;quot;&lt;br /&gt;
	echo &amp;quot;                       La creiamo adesso?&amp;quot;&lt;br /&gt;
	echo &amp;quot;      Considera. pero' che la procedura è necessariamente scarna&amp;quot;&lt;br /&gt;
	echo &amp;quot;       e ci sono alcune limitazioni in merito ai tipi di campo.&amp;quot;&lt;br /&gt;
	echo &amp;quot;   Puoi comunque aggiungere tipi nella configurazione dello script.&amp;quot;&lt;br /&gt;
	echo &amp;quot;-----------------------------------------------------------------------&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
	read -p &amp;quot;Risposta (s/n) ==&amp;gt; &amp;quot; SN2&lt;br /&gt;
	if [ $SN2 = &amp;quot;n&amp;quot; ]; then&lt;br /&gt;
		echo &amp;quot;-----------------------------&amp;quot;&lt;br /&gt;
		echo &amp;quot;Allora crea prima la tabella!&amp;quot;&lt;br /&gt;
		echo &amp;quot;Arrivederci&amp;quot;&lt;br /&gt;
		echo &amp;quot;-----------------------------&amp;quot;&lt;br /&gt;
		cd $INDIR&lt;br /&gt;
		exit 1&lt;br /&gt;
	elif [ $SN2 = &amp;quot;s&amp;quot; ]; then&lt;br /&gt;
		echo &amp;quot;###########################################################&amp;quot;&lt;br /&gt;
		echo &amp;quot;#                        ATTENZIONE                       #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  Ora ti sarà chiesto di inserire i nomi ed i tipi dei   #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  campi della tabella. Ricorda che i nomi di campo NON   #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  devono contenere spazi, caratteri speciali (tranne _)  #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  o lettere accentate.                                   #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#                ----------------------                   #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  NON bisogna inserire l'ID della tabella: lo script     #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  inserisce automaticamente un ID mediumint(8) in auto-  #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  increment (puoi modificare configurando lo script).    #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#                ----------------------                   #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#  Per terminare l'inserimento dei campi, digita 'q'      #&amp;quot;&lt;br /&gt;
		echo &amp;quot;#                                                         #&amp;quot;&lt;br /&gt;
		echo &amp;quot;###########################################################&amp;quot;&lt;br /&gt;
		echo&lt;br /&gt;
		read -p &amp;quot;Procediamo? (s) ==&amp;gt; &amp;quot; SN3&lt;br /&gt;
		if [ $SN3 != &amp;quot;s&amp;quot; ]; then&lt;br /&gt;
			echo &amp;quot;Arrivederci&amp;quot;&lt;br /&gt;
			cd $INDIR&lt;br /&gt;
			exit 1&lt;br /&gt;
		fi&lt;br /&gt;
		NF=1&lt;br /&gt;
		[ -d &amp;quot;$MYOPDIR&amp;quot; ] || mkdir $MYOPDIR&lt;br /&gt;
		echo &amp;quot;CREATE TABLE $2(&amp;quot; &amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
		echo &amp;quot;$IDEN unsigned NOT NULL auto_increment PRIMARY KEY&amp;quot; &amp;gt;&amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
		while [[ $NMF != &amp;quot;q&amp;quot; ]]; do&lt;br /&gt;
			echo &amp;quot;===========================================================&amp;quot;&lt;br /&gt;
			echo &amp;quot;             inserisci il nome del campo n. $NF&amp;quot;&lt;br /&gt;
			echo &amp;quot;                   per finire digita 'q'&amp;quot;&lt;br /&gt;
			echo &amp;quot;===========================================================&amp;quot;&lt;br /&gt;
			echo&lt;br /&gt;
			read -p &amp;quot;Nome campo $NF ==&amp;gt; &amp;quot; NMF&lt;br /&gt;
			let &amp;quot;NF += 1&amp;quot;&lt;br /&gt;
			[ $NMF = &amp;quot;q&amp;quot; ] || echo &amp;quot;,&amp;quot; &amp;gt;&amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
			[ $NMF = &amp;quot;q&amp;quot; ] &amp;amp;&amp;amp; break&lt;br /&gt;
			echo&lt;br /&gt;
			echo &amp;quot;===========================================================&amp;quot;&lt;br /&gt;
			echo &amp;quot;Scegli il tipo del campo $NMF&amp;quot;&lt;br /&gt;
			echo &amp;quot;----------------------------------&amp;quot;&lt;br /&gt;
			for NT in 1 2 3 4 5; do&lt;br /&gt;
				echo &amp;quot;$NT - ${TIPI[$NT-1]}&amp;quot;&lt;br /&gt;
			done&lt;br /&gt;
			echo &amp;quot;===========================================================&amp;quot;&lt;br /&gt;
			echo&lt;br /&gt;
			read -p &amp;quot;Tipo ==&amp;gt; &amp;quot; T&lt;br /&gt;
			echo&lt;br /&gt;
			echo &amp;quot;$NMF ${TIPI[$T-1]}&amp;quot; &amp;gt;&amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
		done&lt;br /&gt;
		echo &amp;quot;);&amp;quot; &amp;gt;&amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
# invoca mysql per la creazione della tabella&lt;br /&gt;
		mysql -u $US --password=$PAW $DAB &amp;lt; $MYOPDIR/$2.sql&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;Devi rispondere o 's' o 'n'...&amp;quot;&lt;br /&gt;
		cd $INDIR&lt;br /&gt;
		exit 1&lt;br /&gt;
	fi&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;Bene: possiamo procedere!&amp;quot;&lt;br /&gt;
	echo &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
	[ -e &amp;quot;$MYOPDIR/$2.sql&amp;quot; ] &amp;amp;&amp;amp; &amp;gt; $MYOPDIR/$2.sql&lt;br /&gt;
fi&lt;br /&gt;
cd $INDIR&lt;br /&gt;
#  passa la patata bollente al file php che effettua,&lt;br /&gt;
#+ di fatto, l'estrazione dei dati dal file .csv&lt;br /&gt;
php csv2mysql.php $HO $US $PAW $DAB $2 $FILECSV&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
echo &amp;quot;LA PROCEDURA E' TERMINATA!&amp;quot;&lt;br /&gt;
if [[ $SN3 = &amp;quot;s&amp;quot; ]]; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &amp;quot;Se la tabella non è stata creata,&amp;quot;&lt;br /&gt;
	echo &amp;quot;controlla la struttura delle query nel file&amp;quot;&lt;br /&gt;
	echo &amp;quot;$HOME/$MYOPDIR/$2.sql.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;Se la tabella non è stata popolata,&amp;quot;&lt;br /&gt;
echo &amp;quot;il file csv ha qualcosa di sbagliato.&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;Arrivederci! :)&amp;quot;&lt;br /&gt;
echo &amp;quot;------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
= Script csv2mysql.php =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
# csv2mysql.php 0.7.10.1 - php aid&lt;br /&gt;
# complemento in php dello script bash csv2mysql&lt;br /&gt;
#&lt;br /&gt;
# ninobi (Antonino Branca) - aschenaz@gmail.com&lt;br /&gt;
# 2007 copyleft&lt;br /&gt;
#&lt;br /&gt;
$host=$argv[1];$us=$argv[2];$pw=$argv[3];$db=$argv[4];$t=$argv[5];$f=$argv[6];&lt;br /&gt;
$c=mysql_connect($host,$us,$pw);mysql_select_db($db);&lt;br /&gt;
$handle = fopen($f,&amp;quot;r&amp;quot;);&lt;br /&gt;
while (($data = fgetcsv($handle, 1000, &amp;quot;,&amp;quot;)) !== FALSE) {&lt;br /&gt;
	$num = count($data);&lt;br /&gt;
	$q=&amp;quot;INSERT INTO $t VALUES('',&amp;quot;;&lt;br /&gt;
	for ($c=0; $c &amp;lt; $num; $c++) {&lt;br /&gt;
       	$q.=&amp;quot;'&amp;quot;.addslashes($data[$c]).&amp;quot;'&amp;quot;;&lt;br /&gt;
		if($c&amp;lt;($num-1)) $q.=&amp;quot;,&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	$q.=&amp;quot;)&amp;quot;;&lt;br /&gt;
	mysql_query($q);&lt;br /&gt;
}&lt;br /&gt;
fclose($handle);mysql_close();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Data: 21/10/2007&lt;br /&gt;
* Autore: Ninobi&lt;/div&gt;</summary>
		<author><name>Slacky</name></author>	</entry>

	</feed>