From gianiaz a gianiaz.net Fri Aug 10 15:18:53 2007 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Fri, 10 Aug 2007 15:18:53 +0200 Subject: [Db] Domanda su left join Message-ID: <46BC65BD.100@gianiaz.net> Scusate la mia immensa ignoranza nell'SQL, sono qui a chiedervi un piccolo aiuto. Ho 2 tabelle, 1 per l'italiano, l'altra/altre per le altre lingue. Quella della lingua principale è fatta cosi: CREATE TABLE `articles_it` ( `id` int(11) NOT NULL auto_increment, `code` varchar(10) NOT NULL default '', `ordine` int(11) default '0', `nome` varchar(100) NOT NULL default '', `descrizione_breve` text NOT NULL, `descrizione` text NOT NULL, `img_list` text, `id_cat` int(11) default '0', `visible` int(11) default '0', PRIMARY KEY (`id`) ) Quelle dei linguaggi secondari cosi: CREATE TABLE `articles_en` ( `articles_id` int(11) NOT NULL, `nome` varchar(100) NOT NULL default '', `descrizione_breve` text NOT NULL, `descrizione` text NOT NULL, PRIMARY KEY (`articles_id`) ) Ora, con questa query, mi tiro fuori il record con tutti i campi nelle diverse lingue: SELECT * FROM articles_it as it LEFT JOIN articles_en as en on en.articles_id=it.id JOIN articles_de as de on de.articles_id=it.id WHERE it.id=2 Il problema è che non so una volta fatto il fetch con php riconoscere quale campo è in inglese, quale in italiano ecc... Sicuramente un modo c'è ma so' gnurante... Grazie (sperando che ci sia qualcuno all'ascolto e non siano tutti in ferie!!!) -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.347.7196482 From cristiano a verondini.it Fri Aug 10 16:20:06 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Fri, 10 Aug 2007 15:20:06 +0100 Subject: [Db] Domanda su left join References: <46BC65BD.100@gianiaz.net> Message-ID: <00d801c7db59$8ddb24b0$6301a8c0@IdeaFutura.local> > SELECT * FROM articles_it as it LEFT JOIN articles_en as en on > en.articles_id=it.id JOIN articles_de as de on de.articles_id=it.id > WHERE it.id=2 Il problema qui è che hai campi con gli stessi nomi nelle due tabelle. Usa la selezione esplicita dei campi e l'aliasing: SELECT ..., de.Nome AS NomeDE, ... -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Fri Aug 10 15:23:59 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Fri, 10 Aug 2007 15:23:59 +0200 Subject: [Db] Domanda su left join In-Reply-To: <46BC65BD.100@gianiaz.net> References: <46BC65BD.100@gianiaz.net> Message-ID: <46BC66EF.5060905@vezz.it> Giovanni Battista Lenoci ha scritto: > SELECT * FROM articles_it as it LEFT JOIN articles_en as en on > en.articles_id=it.id JOIN articles_de as de on de.articles_id=it.id > WHERE it.id=2 > Via l'asterisco e prendi solo i campi che ti servono aliasandoli, SELECT articles_en.descrizione_breve AS descrizione_breve_en ... Ciao Marcello From giovanni.cappellini a gmail.com Sat Aug 11 08:09:08 2007 From: giovanni.cappellini a gmail.com (Giovanni Cappellini) Date: Sat, 11 Aug 2007 08:09:08 +0200 Subject: [Db] Domanda su left join In-Reply-To: <46BC65BD.100@gianiaz.net> References: <46BC65BD.100@gianiaz.net> Message-ID: <46BD5284.9040409@gmail.com> Giovanni Battista Lenoci ha scritto: > Il problema è che non so una volta fatto il fetch con php riconoscere > quale campo è in inglese, quale in italiano ecc... Il fatto è che al momento del fetch il secondo campo della SELECT andrà a sovrascrivere il primo... quindi bisogna per forza operare a livello di mysql, come ti hanno indicato. From marcello a vezz.it Wed Aug 22 11:16:13 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 11:16:13 +0200 Subject: [Db] stored function per generare stringa unica Message-ID: <46CBFEDD.5060604@vezz.it> Ciao a tutti, mi stavo chiedendo se era possibile utilizzare una stored function per generare un identificativo stringa unico all'interno di una tabella, PRIMA di inserire il record nella tabella stessa. Vorrei fare così da php: - invoco la function che mi ritorna un identificativo univoco - inserisco il record utilizzando l'identificativo ottenuto Ho però il sospetto che le due operazioni dovrebbero essere inserite all'interno della stessa stored function, perché potrebbe succedere che nel caso di due insert contemporanee (su transazioni diverse) la function mi ritorni due identificativi identici. Quindi dovrei farmi una function che di fatto crea il record in questione creando l'identificativo unico, prendendo in ingresso tutti i campi che mi servono per popolare il record. Questa funzione quindi dovrebbe: - creare l'identificativo univoco - controllare che non esista nella tabella con una select - inserire il record popolando i campi dai parametri - ritornare l'id del record inserito Ragionamento corretto? Saluti Marcello From cesare a ngi.it Wed Aug 22 11:41:36 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Wed, 22 Aug 2007 11:41:36 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CBFEDD.5060604@vezz.it> References: <46CBFEDD.5060604@vezz.it> Message-ID: <200708221141.36631.cesare@ngi.it> Alle 11:16, mercoledì 22 agosto 2007, Marcello Vezzelli ha scritto: > Ragionamento corretto? Direi di sì. Se vuoi puoi farlo anche in 2 passi, creando prima il record con l'identificativo univoco e poi facendo l'update del record nel secondo passo. L'unica cosa a cui stare attento è che non ti si riempia la tabella di record "vuoti" (ovvero contenenti solo la stringa univoca), per risolvere la cosa ti basta mettere un timestamp e con un cron cancellare tutti i record più vecchi di un tot in cui i campi non sono stati aggiornati. Ciaps ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From domenico.lorusso a pleiade.it Wed Aug 22 11:44:02 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 11:44:02 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CBFEDD.5060604@vezz.it> References: <46CBFEDD.5060604@vezz.it> Message-ID: <46CC0562.30705@pleiade.it> Marcello Vezzelli ha scritto: > Ciao a tutti, > mi stavo chiedendo se era possibile utilizzare una stored function per > generare un identificativo stringa unico all'interno di una tabella, > PRIMA di inserire il record nella tabella stessa.Vorrei fare così da php: > - invoco la function che mi ritorna un identificativo univoco > - inserisco il record utilizzando l'identificativo ottenuto > > uhm... in mysql non è previsto dml nei trigger. una stored procedure che faccia entrambe le cose dovrebbe essere possibile e anche forse consigliabile. In alternativa dovresti usare una transazione.... a meno che non ti funzioni insert into table (id,....) value (getID(),...) In ogni caso sia con una procedura che con due istruzioni in tranasazione ti serve un lock di tipo write, o un semaforo affinché la procedura che genera l'identificativo non venga utilizzata 2 volte contempoaranemante.... ciao! -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From matteo.giacomazzi a gmail.com Wed Aug 22 11:55:39 2007 From: matteo.giacomazzi a gmail.com (Matteo Giacomazzi) Date: Wed, 22 Aug 2007 11:55:39 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CBFEDD.5060604@vezz.it> References: <46CBFEDD.5060604@vezz.it> Message-ID: Il 22/08/07, Marcello Vezzelli ha scritto: > > mi stavo chiedendo se era possibile utilizzare una stored function per > generare un identificativo stringa unico all'interno di una tabella, > PRIMA di inserire il record nella tabella stessa. Con PostgreSQL lo faccio per le tabelle degli ordini di una mia applicazione: in fase di INSERT c'è un trigger di tipo BEFORE che genera l'identificativo e lo assegna al record che si sta inserendo, in questo modo quando il record viene davvero inserito il campo è valorizzato ed univoco (la univocità è garantita dalla transazione implicita in cui girano i trigger). -- Matteo -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070822/0ff07083/attachment.htm From marcello a vezz.it Wed Aug 22 12:03:06 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:03:06 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: References: <46CBFEDD.5060604@vezz.it> Message-ID: <46CC09DA.8080703@vezz.it> Matteo Giacomazzi ha scritto: > Il 22/08/07, *Marcello Vezzelli* > ha scritto: > > mi stavo chiedendo se era possibile utilizzare una stored function per > generare un identificativo stringa unico all'interno di una tabella, > PRIMA di inserire il record nella tabella stessa. > > > > Con PostgreSQL lo faccio per le tabelle degli ordini di una mia > applicazione: in fase di INSERT c'è un trigger di tipo BEFORE che > genera l'identificativo e lo assegna al record che si sta inserendo, > in questo modo quando il record viene davvero inserito il campo è > valorizzato ed univoco (la univocità è garantita dalla transazione > implicita in cui girano i trigger). Come fai a verificare che l'identificativo sia univoco? Tempo fa era passato un thread sui trigger in mysql e una limitazione era appunto che non potevi fare SELECT. Ciao Marcello From marcello a vezz.it Wed Aug 22 12:05:10 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:05:10 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <200708221141.36631.cesare@ngi.it> References: <46CBFEDD.5060604@vezz.it> <200708221141.36631.cesare@ngi.it> Message-ID: <46CC0A56.70501@vezz.it> Cesare D'Amico ha scritto: > > Direi di sì. Se vuoi puoi farlo anche in 2 passi, creando prima il > record con l'identificativo univoco e poi facendo l'update del record > nel secondo passo. > Sempre all'interno della sf pero'. > L'unica cosa a cui stare attento è che non ti si riempia la tabella di > record "vuoti" (ovvero contenenti solo la stringa univoca), per > risolvere la cosa ti basta mettere un timestamp e con un cron > cancellare tutti i record più vecchi di un tot in cui i campi non sono > stati aggiornati. > Non posso permettermi di avere record vuoti... mi si rompe il gioco. Teoricamente la insert è unica, quindi quando la faccio è popolata già coi campi.. non vorrei fare una insert e poi una update. Vorrei fare la insert sapendo già che l'identificativo è univoco. Ciao Marcello From marcello a vezz.it Wed Aug 22 12:10:18 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:10:18 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0562.30705@pleiade.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> Message-ID: <46CC0B8A.9080501@vezz.it> Domenico L. ha scritto: > > In alternativa dovresti usare una transazione.... a meno che non ti > funzioni > > insert into table (id,....) value (getID(),...) > Da provare. > In ogni caso sia con una procedura che con due istruzioni in > tranasazione ti serve un lock di tipo write, o un semaforo affinché la > procedura che genera l'identificativo non venga utilizzata 2 volte > contempoaranemante.... > Ma il lock non è garantito dalla transazione? Poniamo che in due transazioni venga generato lo stesso id... succederà che la prima insert ha successo e la seconda fallisce... non posso semplicemente ripetere la seconda insert? Se il codice è tutto dentro a una sp, riprovo finché la insert non ha successo, generando un nuovo id ad ogni tentativo. In pratica è come faccio adesso in php: 1) genero un id 2) SELECT per guardare se c'è già.. se c'è già torna a 1) 3) provo INSERT 4) se non ok torno a 1) 5) ho l'id del record inserito C'è modo di farlo tutto dentro alla stored function in mysql 5? Ciao Marcello From cristiano a verondini.it Wed Aug 22 13:08:08 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Wed, 22 Aug 2007 12:08:08 +0100 Subject: [Db] stored function per generare stringa unica References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> Message-ID: <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> > 1) genero un id Questi ID seguono una certa logica? Si può pensare di usare un autonumber per generarli ('buttando via' una colonna nella tabella)? -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Wed Aug 22 12:21:43 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:21:43 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> Message-ID: <46CC0E37.8050001@vezz.it> Cristiano Verondini ha scritto: >> 1) genero un id >> > Questi ID seguono una certa logica? Si può pensare di usare un > autonumber per generarli ('buttando via' una colonna nella tabella)? > No, sono (e devono) essere completamente casuali. Questo è il formato: 24 caratteri presi tra a-z,A-Z e 0-9 esempio: aVtu6wr87XFqzTLm6Li6wB6P Ciao Marcello From domenico.lorusso a pleiade.it Wed Aug 22 12:18:56 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 12:18:56 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0B8A.9080501@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> Message-ID: <46CC0D90.9030101@pleiade.it> Marcello Vezzelli ha scritto: > Domenico L. ha scritto: > >> In ogni caso sia con una procedura che con due istruzioni in >> tranasazione ti serve un lock di tipo write, o un semaforo affinché la >> procedura che genera l'identificativo non venga utilizzata 2 volte >> contempoaranemante.... >> >> > > Ma il lock non è garantito dalla transazione? > Sì ma dipende da che tipo di isolation levle applichi se usi lo standard, se ben ricordo, utlizzi un lock di tipo read. Questo implica che che una insert fallisce, ma una procedura che legge tutta la tabelal no quindi: SF del dml 1 -> lock table read -> get code "AAAAA" SF del dml 2 -> lock table read -> get code "AAAAA" insert dml 1 -> Ok insert dml 2 -> failed ma potrebbe capitare anche: SF del dml 1 -> lock table read -> get code "AAAAA" SF del dml 2 -> lock table read -> get code "AAAAA" insert dml 2 -> Ok insert dml 1 -> Failed > Poniamo che in due transazioni venga generato lo stesso id... succederà > che la prima insert ha successo e la seconda fallisce... > non posso semplicemente ripetere la seconda insert? > sì... certo.. > Se il codice è tutto dentro a una sp, riprovo finché la insert non ha > successo, generando un nuovo id ad ogni tentativo. > Sì... dipende dalle performance che vuoi ottenre e dal traffico (moltiplicato *10) che prevedi di avere Se ti aspetti una transazione all'ora puoi supporne una ogni 6 minuti quindi ok Se tene aspetti una al minuto puoi suppoer una ogni 6 secondi... e via web diventa già rischioso Se ti aspetti una al secondo è una follia! Poi quanto tempo ci impiega a leggersi la tabella??? Non puoi generaer un codice alfanumerico partendo da un codice numerico? (vedi anche risposta di Cris) ciao -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From franco a inpe.unipi.it Wed Aug 22 12:21:25 2007 From: franco a inpe.unipi.it (Francesco F) Date: Wed, 22 Aug 2007 12:21:25 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC09DA.8080703@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC09DA.8080703@vezz.it> Message-ID: <46CC0E25.7050408@inpe.unipi.it> On 22/08/2007 12.03, Marcello Vezzelli wrote: > > Come fai a verificare che l'identificativo sia univoco? > Tempo fa era passato un thread sui trigger in mysql e una limitazione > era appunto che non potevi fare SELECT. > Una possibile soluzione, da migliorare, con l'uso di una SP chiamata dal trigger: http://lists.ziobudda.net/pipermail/db/2007-February/000331.html Francesco From domenico.lorusso a pleiade.it Wed Aug 22 12:21:55 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 12:21:55 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC09DA.8080703@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC09DA.8080703@vezz.it> Message-ID: <46CC0E43.1090208@pleiade.it> Marcello Vezzelli ha scritto: > Matteo Giacomazzi ha scritto: > >> Con PostgreSQL lo faccio per le tabelle degli ordini di una mia >> applicazione: in fase di INSERT c'è un trigger di tipo BEFORE che >> genera l'identificativo e lo assegna al record che si sta inserendo, >> in questo modo quando il record viene davvero inserito il campo è >> valorizzato ed univoco (la univocità è garantita dalla transazione >> implicita in cui girano i trigger). >> > > Come fai a verificare che l'identificativo sia univoco? > Tempo fa era passato un thread sui trigger in mysql e una limitazione > era appunto che non potevi fare SELECT. > Se per questo in oracle una select sulla tabella target di un trigger è ancora vietata, per motivi di performance.... Mi sembra strano che pgsql ci riesca in maniera affidabile... però non ho motivo di dubitare di quanto ha detto Matteo -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From domenico.lorusso a pleiade.it Wed Aug 22 12:23:59 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 12:23:59 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0E37.8050001@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> <46CC0E37.8050001@vezz.it> Message-ID: <46CC0EBF.6070300@pleiade.it> Marcello Vezzelli ha scritto: >> >> > No, sono (e devono) essere completamente casuali. > Ok non lo fare con il pc allora :-D -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Wed Aug 22 12:24:09 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:24:09 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0D90.9030101@pleiade.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <46CC0D90.9030101@pleiade.it> Message-ID: <46CC0EC9.7080509@vezz.it> Domenico L. ha scritto: > > Sì ma dipende da che tipo di isolation levle applichi se usi lo > standard, se ben ricordo, utlizzi un lock di tipo read. > > ho capito. >> Poniamo che in due transazioni venga generato lo stesso id... succederà >> che la prima insert ha successo e la seconda fallisce... >> non posso semplicemente ripetere la seconda insert? >> >> > sì... certo.. > questo risolve il problema di cui sopra, quindi. >> Se il codice è tutto dentro a una sp, riprovo finché la insert non ha >> successo, generando un nuovo id ad ogni tentativo. >> >> > Sì... dipende dalle performance che vuoi ottenre e dal traffico > (moltiplicato *10) che prevedi di avere > le perfomance non sono critiche in questo caso. > Poi quanto tempo ci impiega a leggersi la tabella??? > Una select di un record su un campo (indicizzato unique, tra l'altro) non dovrebbe essere così pesante. I record saranno migliaia e non milioni, quindi le collisioni dovrebbero essere piuttosto rare (e di conseguenza la necessità di reiterare select e insert) > Non puoi generaer un codice alfanumerico partendo da un codice numerico? > (vedi anche risposta di Cris) > No, vedi risposta a Cris ;) Ciao Marcello From simone a tomato.it Wed Aug 22 12:24:52 2007 From: simone a tomato.it (Simone Fumagalli) Date: Wed, 22 Aug 2007 12:24:52 +0200 Subject: [Db] Caratteri speciali MS Word Message-ID: <46CC0EF4.7080006@tomato.it> Ciao a tutti. Devo importare in un DB MySQL dei file che contengono i caratteri speciali di Word (Apici inversi, triplo punto etc) Qualcuno qual'è l'encoding corretto per non aver problemi ? Grazie Simone From marcello a vezz.it Wed Aug 22 12:30:44 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:30:44 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0EBF.6070300@pleiade.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> <46CC0E37.8050001@vezz.it> <46CC0EBF.6070300@pleiade.it> Message-ID: <46CC1054.9090406@vezz.it> Domenico L. ha scritto: > Marcello Vezzelli ha scritto: > >>> >>> >>> >> No, sono (e devono) essere completamente casuali. >> >> > Ok non lo fare con il pc allora :-D > LOL :) Beh ovviamente ho un convertitore ADC sulla parallela che misura il rumore di un transistor per generare i numeri casuali... Mi sono espresso in modo non preciso: completamente casuali = completamente pseudo casuali Che pignoli però! :) Ciao Marcello From cristiano a verondini.it Wed Aug 22 13:30:20 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Wed, 22 Aug 2007 12:30:20 +0100 Subject: [Db] stored function per generare stringa unica References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> <46CC0E37.8050001@vezz.it><46CC0EBF.6070300@pleiade.it> <46CC1054.9090406@vezz.it> Message-ID: <008501c7e4b0$04313820$6301a8c0@IdeaFutura.local> > Beh ovviamente ho un convertitore ADC sulla parallela che misura il > rumore di un transistor per generare i numeri casuali... Attento a non esaurire le lacune! :) -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Wed Aug 22 12:31:56 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:31:56 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC0EF4.7080006@tomato.it> References: <46CC0EF4.7080006@tomato.it> Message-ID: <46CC109C.7060207@vezz.it> Simone Fumagalli ha scritto: > Ciao a tutti. > > Devo importare in un DB MySQL dei file che contengono i caratteri > speciali di Word (Apici inversi, triplo punto etc) > > Qualcuno qual'è l'encoding corretto per non aver problemi ? > dovresti salvarli in txt UTF8 da word e poi importarli con la stessa codifica. Ciao Marcello From marcello a vezz.it Wed Aug 22 12:34:33 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:34:33 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <008501c7e4b0$04313820$6301a8c0@IdeaFutura.local> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <006401c7e4ac$b961f120$6301a8c0@IdeaFutura.local> <46CC0E37.8050001@vezz.it><46CC0EBF.6070300@pleiade.it> <46CC1054.9090406@vezz.it> <008501c7e4b0$04313820$6301a8c0@IdeaFutura.local> Message-ID: <46CC1139.90904@vezz.it> Cristiano Verondini ha scritto: >> Beh ovviamente ho un convertitore ADC sulla parallela che misura il >> rumore di un transistor per generare i numeri casuali... >> > > Attento a non esaurire le lacune! :) > Ahah non c'è problema, uso anche le mie che ho in programmazione :D Ciao Marcello From domenico.lorusso a pleiade.it Wed Aug 22 12:37:42 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 12:37:42 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC0EC9.7080509@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <46CC0D90.9030101@pleiade.it> <46CC0EC9.7080509@vezz.it> Message-ID: <46CC11F6.8000803@pleiade.it> Marcello Vezzelli ha scritto: > Una select di un record su un campo (indicizzato unique, tra l'altro) > non dovrebbe essere così pesante. > I record saranno migliaia e non milioni, quindi le collisioni dovrebbero > essere piuttosto rare (e di conseguenza la necessità di reiterare select > e insert) > Uhm... quindi una cosa getNextID()->numero_pseudo_sequenziale md5(numerosequenziale) -> 32 caratteri alfanumerici cerca se c'è se non c'è inserisci... numero_pseudo_sequenziale potrebbe anche essere ('yyyymmddhhmmss') in questo caso: in questo caso 2 transazioni vicine generano sicuramente codici diversi, quindi non ricadi nel caso che ti ho detto io md5 o altra funzione di generazione a carattere caotico ciaps -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Wed Aug 22 12:41:04 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 12:41:04 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC11F6.8000803@pleiade.it> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <46CC0D90.9030101@pleiade.it> <46CC0EC9.7080509@vezz.it> <46CC11F6.8000803@pleiade.it> Message-ID: <46CC12C0.4090405@vezz.it> Domenico L. ha scritto: > > Uhm... quindi una cosa > > getNextID()->numero_pseudo_sequenziale > > md5(numerosequenziale) -> 32 caratteri alfanumerici > cerca se c'è se non c'è inserisci... > > numero_pseudo_sequenziale potrebbe anche essere ('yyyymmddhhmmss') > > in questo caso: in questo caso 2 transazioni vicine generano sicuramente > codici diversi, quindi non ricadi nel caso che ti ho detto io > > md5 o altra funzione di generazione a carattere caotico > In altre situazioni lo uso, ma qui non posso (ci sono specifiche da rispettare) E cmq è più educativo così, dai! :) Ciao Marcello From cristiano a verondini.it Wed Aug 22 13:45:09 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Wed, 22 Aug 2007 12:45:09 +0100 Subject: [Db] stored function per generare stringa unica References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <46CC0D90.9030101@pleiade.it><46CC0EC9.7080509@vezz.it> <46CC11F6.8000803@pleiade.it> Message-ID: <009101c7e4b1$e546b870$6301a8c0@IdeaFutura.local> > numero_pseudo_sequenziale potrebbe anche essere ('yyyymmddhhmmss') > > in questo caso: in questo caso 2 transazioni vicine generano > sicuramente codici diversi, quindi non ricadi nel caso che ti ho > detto io La granularità sul secondo è troppo bassa per garantire l'univocità. Ed anche md5 non la garantisce ... devi comunque fare un controllo sulla tabella. -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From matteo.giacomazzi a gmail.com Wed Aug 22 12:47:11 2007 From: matteo.giacomazzi a gmail.com (Matteo Giacomazzi) Date: Wed, 22 Aug 2007 12:47:11 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <46CC09DA.8080703@vezz.it> References: <46CBFEDD.5060604@vezz.it> <46CC09DA.8080703@vezz.it> Message-ID: Il 22/08/07, Marcello Vezzelli ha scritto: > > > valorizzato ed univoco (la univocità è garantita dalla transazione > > implicita in cui girano i trigger). > > Come fai a verificare che l'identificativo sia univoco? > Tempo fa era passato un thread sui trigger in mysql e una limitazione > era appunto che non potevi fare SELECT. > Sicuramente postgresql consente di effettuare select nei trigger, anche sulla tabella target del trigger medesimo. In ogni caso, utilizzavo una sequenza per ottenere un contatore incrementale che poi veniva usato per la costruzione dell'identificativo. Il fatto che il valore restituito dal contatore fosse sempre diverso (cosa garantita, appunto, dalla transazione) assicurava l'univocità dell'identificativo costruito a partire da esso. -- Matteo -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070822/0d6e239a/attachment-0001.html From domenico.lorusso a pleiade.it Wed Aug 22 12:50:12 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed, 22 Aug 2007 12:50:12 +0200 Subject: [Db] stored function per generare stringa unica In-Reply-To: <009101c7e4b1$e546b870$6301a8c0@IdeaFutura.local> References: <46CBFEDD.5060604@vezz.it> <46CC0562.30705@pleiade.it> <46CC0B8A.9080501@vezz.it> <46CC0D90.9030101@pleiade.it><46CC0EC9.7080509@vezz.it> <46CC11F6.8000803@pleiade.it> <009101c7e4b1$e546b870$6301a8c0@IdeaFutura.local> Message-ID: <46CC14E4.5010407@pleiade.it> Cristiano Verondini ha scritto: > La granularità sul secondo è troppo bassa per garantire l'univocità. Ed > anche md5 non la garantisce ... devi comunque fare un controllo sulla > tabella. > > sì certo ma è un singolo accesso logaritmico, mentre una generazione che richiede di leggere tutta la tabella è un fulltable-scan in ogni caso. al più (non ci credo che mysql abbia questa finezza) del solo indice -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From simone a tomato.it Wed Aug 22 17:37:13 2007 From: simone a tomato.it (Simone Fumagalli) Date: Wed, 22 Aug 2007 17:37:13 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC109C.7060207@vezz.it> References: <46CC0EF4.7080006@tomato.it> <46CC109C.7060207@vezz.it> Message-ID: <46CC5829.9090604@tomato.it> Son riuscito a esportare correttamente i dati in un CSV in UTF-8 (i dati vengono da un DB Oracle) Quando, da console, faccio il LOAD DATA LOCAL INFILE mi salta delle righe. Se avete suggerimenti ... Simone Marcello Vezzelli wrote: > dovresti salvarli in txt UTF8 da word e poi importarli con la stessa > codifica. From marcello a vezz.it Wed Aug 22 17:45:26 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 17:45:26 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC5829.9090604@tomato.it> References: <46CC0EF4.7080006@tomato.it> <46CC109C.7060207@vezz.it> <46CC5829.9090604@tomato.it> Message-ID: <46CC5A16.4020208@vezz.it> Simone Fumagalli ha scritto: > Son riuscito a esportare correttamente i dati in un CSV in UTF-8 > (i dati vengono da un DB Oracle) > > Quando, da console, faccio il LOAD DATA LOCAL INFILE mi salta delle righe. > > Se avete suggerimenti ... > Non è che c'è qualche carattere "sporco" ? Prova a spezzare il csv in più parti, in prossimità delle righe che salta e vedi se c'è qualcosa di strano. Ciao Marcello From simone a tomato.it Wed Aug 22 18:17:09 2007 From: simone a tomato.it (Simone Fumagalli) Date: Wed, 22 Aug 2007 18:17:09 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC5A16.4020208@vezz.it> References: <46CC0EF4.7080006@tomato.it> <46CC109C.7060207@vezz.it> <46CC5829.9090604@tomato.it> <46CC5A16.4020208@vezz.it> Message-ID: <46CC6185.2080703@tomato.it> si, avevo già fatto questa prova. Ho fatto un CSV con una sola riga ed effettivamente il sistema mi inseriva la riga ma si fermava al carattere strano. Il punto è che questo *non* succede su tutti i caratteri "strani" di MS Word ma solo su alcuni. Mi sa che è un problema di client. Simone Marcello Vezzelli wrote: > Non è che c'è qualche carattere "sporco" ? > Prova a spezzare il csv in più parti, in prossimità delle righe che > salta e vedi se c'è qualcosa di strano. From marcello a vezz.it Wed Aug 22 18:20:06 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 18:20:06 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC6185.2080703@tomato.it> References: <46CC0EF4.7080006@tomato.it> <46CC109C.7060207@vezz.it> <46CC5829.9090604@tomato.it> <46CC5A16.4020208@vezz.it> <46CC6185.2080703@tomato.it> Message-ID: <46CC6236.5090805@vezz.it> Simone Fumagalli ha scritto: > si, avevo già fatto questa prova. > > Ho fatto un CSV con una sola riga ed effettivamente il sistema mi > inseriva la riga ma si fermava al carattere strano. > > Il punto è che questo *non* succede su tutti i caratteri "strani" di MS > Word ma solo su alcuni. > > Mi sa che è un problema di client. > Ecco, il punto è che NON ci dovrebbero essere caratteri strani, nel senso che dovrebbero essere tutti utf8. Prova a usare phpmyadmin e assicurati che la codifica sia utf8. In questo modo, se il txt è utf8, lo uploadi in utf8, viene decodificato correttamente e (si spera) parsato. Dovrai ovviamente costruirti le query x le insert. Ciao Marcello From aldobertoldini a gmail.com Wed Aug 22 18:34:43 2007 From: aldobertoldini a gmail.com (aldo bertoldini) Date: Wed, 22 Aug 2007 18:34:43 +0200 Subject: [Db] Caratteri speciali MS Word In-Reply-To: <46CC6236.5090805@vezz.it> References: <46CC0EF4.7080006@tomato.it> <46CC109C.7060207@vezz.it> <46CC5829.9090604@tomato.it> <46CC5A16.4020208@vezz.it> <46CC6185.2080703@tomato.it> <46CC6236.5090805@vezz.it> Message-ID: <90b890c90708220934m506271e5g887e32ba7ced1cd0@mail.gmail.com> Il 22/08/07, Marcello Vezzelli ha scritto: > Simone Fumagalli ha scritto: > > si, avevo già fatto questa prova. > > > > Ho fatto un CSV con una sola riga ed effettivamente il sistema mi > > inseriva la riga ma si fermava al carattere strano. > > > > Il punto è che questo *non* succede su tutti i caratteri "strani" di MS > > Word ma solo su alcuni. > > > > Mi sa che è un problema di client. > > nei commenti a utf8_encode su php.net ci sono un po' di funzioni per convertire in UTF8 alcuni caratteri che utf8_encode non riconosce, a me sono sempre risultate molto utili From marcello a vezz.it Wed Aug 22 18:48:18 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed, 22 Aug 2007 18:48:18 +0200 Subject: [Db] =?iso-8859-15?q?stored_procedure=3A_dov=27=E8_l=27errore=3F?= Message-ID: <46CC68D2.5070505@vezz.it> Ciao a tutti, ho provato a implementare la stored procedure di cui si parlava nel topic precedente. Questa è la tabella: CREATE TABLE IF NOT EXISTS `meeting` ( `id` int(11) NOT NULL auto_increment, `chiave` varchar(24) character set latin1 collate latin1_general_cs NOT NULL, `descr` varchar(50) collate latin1_general_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `chiave` (`chiave`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ; Questa è l'sql che crea la stored procedure: delimiter // use ew // DROP PROCEDURE IF EXISTS GetKey // CREATE procedure GetKey(IN campo1 VARCHAR(150),OUT p_text VARCHAR(30),OUT i_id INT) BEGIN DECLARE newchiave VARCHAR(32); DECLARE newchiave_esiste INT; REPEAT SET @i=0; SET @x=0; SET newchiave = ''; SET newchiave_esiste = 0; SET @alpha='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; REPEAT SET @i=@i+1; SET @x=FLOOR(RAND() * (CHAR_LENGTH(@alpha))); SET newchiave=CONCAT(newchiave,SUBSTRING(@alpha, a x,1)); UNTIL @i>24 END REPEAT; /* controllo se la chiave esiste */ SET i_id = 0; SELECT id INTO i_id FROM meeting WHERE chiave=newchiave COLLATE latin1_general_cs LIMIT 1; IF (i_id=0) OR (i_id=NULL) THEN INSERT INTO meeting (chiave,descr) VALUES (newchiave,campo1); /* se fallisce la insert, LAST_INSERT_ID()=0 */ SET i_id=LAST_INSERT_ID(); END IF; UNTIL i_id = 0 END REPEAT; SET p_text = newchiave; END // delimiter ; Ora se la testo così': SET @test=''; SET @cid=-1; CALL GetKey('ciao', a test, a cid); SELECT @test, a cid; Ottengo ERROR 1329 (02000): No data - zero rows fetched, selected, or processed mysql> SELECT @test, a cid; +-------+------+ | @test | @cid | +-------+------+ | | -1 | +-------+------+ 1 row in set (0.00 sec) Cosa sbaglio? Ciao Marcello From marcello a vezz.it Thu Aug 23 13:49:47 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Thu, 23 Aug 2007 13:49:47 +0200 Subject: [Db] stored procedure per creare stringa univoca: funziona Message-ID: <46CD745B.2060509@vezz.it> Ciao a tutti, sono riuscito a fare quello che volevo, ovvero creare una stored procedure che generi una stringa pseudocasuale come chiave primaria, controlli che non esista, ne faccia la insert e se fallisce la insert tenti nuovamente con un'altra chiave. Per testare le parti di duplicazione ho forzato l'assegnamento della nuova chiave a una chiave già presente nella tabella, usando un valore RAND. Qualsiasi commento,chiarimento o miglioria è benvenuto. I punti "chiave": BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' BEGIN END; SELECT id INTO i_id FROM meeting WHERE chiave=@newchiave COLLATE 'latin1_general_cs'; END; Questo blocco permette di gestire quel maledetto "ERROR 1329 (02000): No data - zero rows fetched, selected, or processed" che non mi faceva proseguire (se la chiave non viene trovata la query si interrompeva lì). SET @inserterror=0; BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @inserterror=1; INSERT INTO meeting (chiave,email) VALUES (@newchiave,campo1); END; Questo blocco invece permette di gestire la violazione di chiave primaria nel caso in cui si inserisca una stringa già presente. Ecco il codice con qualche commento: delimiter // use ew // DROP PROCEDURE IF EXISTS GetKey // CREATE procedure GetKey(IN campo1 VARCHAR(150),OUT p_text VARCHAR(30),OUT i_id INT) BEGIN creachiave: LOOP SET @i=0; SET @x=0; SET @newchiave = ''; SET @alpha='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; REPEAT SET @i=@i+1; SET @x=FLOOR(RAND() * (CHAR_LENGTH(@alpha))); SET @newchiave=CONCAT(@newchiave,SUBSTRING(@alpha, a x,1)); UNTIL @i>24 END REPEAT; /* simulo la creazione di una chiave duplicata per far ritornare i_id>0 alla select */ IF FLOOR(RAND() * 2) = 0 THEN SET @newchiave='TDONZylEaeNXhCShVRwYRDvf'; END IF; /* controllo se la chiave esiste */ SET i_id = 0; BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' BEGIN END; SELECT id INTO i_id FROM meeting WHERE chiave=@newchiave COLLATE 'latin1_general_cs'; END; IF (i_id=0) THEN /* significa che la chiave non c'è */ /* simulo la creazione di una chiave duplicata per far fallire la insert */ IF FLOOR(RAND() * 2) = 0 THEN SET @newchiave='TDONZylEaeNXhCShVRwYRDvf'; END IF; SET @inserterror=0; BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @inserterror=1; INSERT INTO meeting (chiave,email) VALUES (@newchiave,campo1); END; IF @inserterror=0 THEN SET i_id=LAST_INSERT_ID(); LEAVE creachiave; END IF; END IF; END LOOP; SET p_text = @newchiave; END // delimiter ; SET @test=''; SET @cid=-1; CALL GetKey('ciao', a test, a cid); SELECT @test, a cid; Ciao Marcello From domenico.lorusso a pleiade.it Thu Aug 23 14:08:14 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Thu, 23 Aug 2007 14:08:14 +0200 Subject: [Db] stored procedure per creare stringa univoca: funziona In-Reply-To: <46CD745B.2060509@vezz.it> References: <46CD745B.2060509@vezz.it> Message-ID: <46CD78AE.4040202@pleiade.it> Marcello Vezzelli ha scritto: > SET @inserterror=0; > BEGIN > DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @inserterror=1; > INSERT INTO meeting (chiave,email) VALUES (@newchiave,campo1); > END; > Uhm non ti basta questo? -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Thu Aug 23 18:03:58 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Thu, 23 Aug 2007 18:03:58 +0200 Subject: [Db] stored procedure per creare stringa univoca: funziona In-Reply-To: <46CD78AE.4040202@pleiade.it> References: <46CD745B.2060509@vezz.it> <46CD78AE.4040202@pleiade.it> Message-ID: <46CDAFEE.7050104@vezz.it> Domenico L. ha scritto: > Marcello Vezzelli ha scritto: > >> SET @inserterror=0; >> BEGIN >> DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @inserterror=1; >> INSERT INTO meeting (chiave,email) VALUES (@newchiave,campo1); >> END; >> >> > Uhm non ti basta questo? > Effettivamente potrebbe bastare. Tra l'altro, evito di fare la SELECT... probabilmente si può inserire anche in un trigger. Faccio qualche prova. Ciao Marcello From domenico.lorusso a pleiade.it Thu Aug 23 18:25:34 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Thu, 23 Aug 2007 18:25:34 +0200 Subject: [Db] stored procedure per creare stringa univoca: funziona In-Reply-To: <46CDAFEE.7050104@vezz.it> References: <46CD745B.2060509@vezz.it> <46CD78AE.4040202@pleiade.it> <46CDAFEE.7050104@vezz.it> Message-ID: <46CDB4FE.1000505@pleiade.it> Marcello Vezzelli ha scritto: > Tra l'altro, evito di fare la SELECT... probabilmente si può inserire > anche in un trigger. > su questo ho qualche dubbio... anche perché dml nei trigger mysql fino alla versione 5 non ne supporta -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From gianiaz a gianiaz.net Fri Aug 24 10:29:38 2007 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Fri, 24 Aug 2007 10:29:38 +0200 Subject: [Db] Problema con concat Message-ID: <46CE96F2.5040207@gianiaz.net> Prima che mi scervelli a capire dove sta l'errore, se io faccio un'update del genere: UPDATE tabella set campo=concat(campo, 'altro testo'); E' normale che nel caso in cui campo contenga null non faccia nulla? grazie, ciao -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.347.7196482 From marcello a vezz.it Fri Aug 24 10:34:45 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Fri, 24 Aug 2007 10:34:45 +0200 Subject: [Db] Problema con concat In-Reply-To: <46CE96F2.5040207@gianiaz.net> References: <46CE96F2.5040207@gianiaz.net> Message-ID: <46CE9825.30706@vezz.it> Giovanni Battista Lenoci ha scritto: > Prima che mi scervelli a capire dove sta l'errore, se io faccio > un'update del genere: > > UPDATE tabella set campo=concat(campo, 'altro testo'); > > E' normale che nel caso in cui campo contenga null non faccia nulla? > prova così: UPDATE tabella SET campo=CONCAT(IF(campo IS NULL,'',campo),'altro testo'); Ciao Marcello From max a linuxtime.it Fri Aug 24 10:35:20 2007 From: max a linuxtime.it (Massimiliano Marini) Date: Fri, 24 Aug 2007 10:35:20 +0200 Subject: [Db] Problema con concat In-Reply-To: <46CE96F2.5040207@gianiaz.net> References: <46CE96F2.5040207@gianiaz.net> Message-ID: <20070824103520.28240e32.max@linuxtime.it> > Prima che mi scervelli a capire dove sta l'errore, se io faccio > un'update del genere: > > UPDATE tabella set campo=concat(campo, 'altro testo'); > > E' normale che nel caso in cui campo contenga null non faccia nulla? Si, è un comportamento dell'sql, se hai un campo NULL o comunque una dipendenza con un valoe NULL, il valore dell'espressione è NULL. My 0.2 cent :) -- Massimiliano Marini - http://www.linuxtime.it/massimilianomarini/ "It's easier to invent the future than to predict it." -- Alan Kay From michel a ziobudda.net Fri Aug 24 15:54:25 2007 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Fri, 24 Aug 2007 15:54:25 +0200 Subject: [Db] Cambiare la collation al volo Message-ID: <46CEE311.6020307@ziobudda.net> Ciao all. Domanda piu' stupida che banale. Una collega ha un DB le cui tabelle nei campi di testo hanno come collation il sempre odiato latin1_swedish_ci. C'e' un modo per cambiare questa collation in modo automatico per tutti campi della tabella ? Oppure l'unica è esportare la struttura e i dati (in due file distinti), cambiare i campi della struttura da latin1_swedish_ci a utf8_general_ci, importare la struttura corretta e poi i dati ? grazie mille. -- Michel 'ZioBudda' Morelli michel a ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-3939890025 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it MSN: michel a ziobuddalabs.it From michel a ziobudda.net Fri Aug 24 16:29:23 2007 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Fri, 24 Aug 2007 16:29:23 +0200 Subject: [Db] Cambiare la collation al volo Message-ID: <46CEEB43.9000005@ziobudda.net> Ciao all. Domanda piu' stupida che banale. Una collega ha un DB le cui tabelle nei campi di testo hanno come collation il sempre odiato latin1_swedish_ci. C'e' un modo per cambiare questa collation in modo automatico per tutti campi della tabella ? Oppure l'unica è esportare la struttura e i dati (in due file distinti), cambiare i campi della struttura da latin1_swedish_ci a utf8_general_ci, importare la struttura corretta e poi i dati ? grazie mille. -- Michel 'ZioBudda' Morelli michel a ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-3939890025 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it MSN: michel a ziobuddalabs.it From gianluca a ihuri.it Fri Aug 24 17:08:56 2007 From: gianluca a ihuri.it (=?UTF-8?B?R2lhbmx1Y2EgQmHDuQ==?=) Date: Fri, 24 Aug 2007 17:08:56 +0200 Subject: [Db] Cambiare la collation al volo In-Reply-To: <46CEE311.6020307@ziobudda.net> References: <46CEE311.6020307@ziobudda.net> Message-ID: <46CEF488.5070404@ihuri.it> Davide Michel 'ZioBudda' Morelli wrote: > Ciao all. Domanda piu' stupida che banale. > > Una collega ha un DB le cui tabelle nei campi di testo hanno come > collation il sempre odiato latin1_swedish_ci. > C'e' un modo per cambiare questa collation in modo automatico per tutti > campi della tabella ? > Oppure l'unica è esportare la struttura e i dati (in due file distinti), > cambiare i campi della struttura da latin1_swedish_ci a utf8_general_ci, > importare la struttura corretta e poi i dati ? > > grazie mille. > Questo interessa anche a me :) siate prodighi di risposte. Gianluca From marcello a vezz.it Fri Aug 24 17:40:04 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Fri, 24 Aug 2007 17:40:04 +0200 Subject: [Db] Cambiare la collation al volo In-Reply-To: <46CEF488.5070404@ihuri.it> References: <46CEE311.6020307@ziobudda.net> <46CEF488.5070404@ihuri.it> Message-ID: <46CEFBD4.1010603@vezz.it> Gianluca Baù ha scritto: > >> C'e' un modo per cambiare questa collation in modo automatico per tutti >> campi della tabella ? >> >> Che io sappia non c'è un modo automatico. Però, se siete root e guardate il database information_schema e le tabelle COLUMNS e TABLES, non è troppo difficile con qualche query mirata cambiarle tutte al volo. Tentar non nuoce (se prima si fa una backup completo!) Cambiando le collation così però non viene effettuata nessuna conversione. Quindi passare da latin1_swedish a latin1_general dovrebbe essere indolore, verso utf8 invece no. Ciao Marcello From domenico.lorusso a pleiade.it Fri Aug 24 18:02:06 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Fri, 24 Aug 2007 18:02:06 +0200 Subject: [Db] Cambiare la collation al volo In-Reply-To: <46CEEB43.9000005@ziobudda.net> References: <46CEEB43.9000005@ziobudda.net> Message-ID: <46CF00FE.7090402@pleiade.it> Davide Michel 'ZioBudda' Morelli ha scritto: > Ciao all. Domanda piu' stupida che banale. > > Una collega ha un DB le cui tabelle nei campi di testo hanno come > collation il sempre odiato latin1_swedish_ci. > perché non ti piace? > C'e' un modo per cambiare questa collation in modo automatico per tutti > campi della tabella ? > cambiare il charset (più che la collation) è sempre un bagno di sangue... non ho esperienza, ma dovrebbero esserci tool di migrazione sul sito di mysql -- Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From cesare a ngi.it Tue Aug 28 16:51:04 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 16:51:04 +0200 Subject: [Db] Duplicare database mysql Message-ID: <200708281651.04858.cesare@ngi.it> Hola, domanda banale... ma ho provato empiricamente e non ha funzionato :-P È possibile in qualche modo, con mysql, duplicare un database SENZA fare il dump+import? Ho un db molto grosso da duplicare e vorrei evitare di importare 150 mega di query mysql... Ho provato a copiare tutti i file .frm da una directory a un'altra, dopo aver creato il db su mysql, e non funziona (mi fa vedere la lista delle tabelle con SHOW TABLES, ma se provo a fare una select mi dice che la tabella non esiste). Mysql 5.0.26 Grazie, ciaps ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From marcello a vezz.it Tue Aug 28 16:54:40 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Tue, 28 Aug 2007 16:54:40 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <200708281651.04858.cesare@ngi.it> References: <200708281651.04858.cesare@ngi.it> Message-ID: <46D43730.8020002@vezz.it> Cesare D'Amico ha scritto: > Hola, > domanda banale... ma ho provato empiricamente e non ha funzionato :-P > > È possibile in qualche modo, con mysql, duplicare un database SENZA fare > il dump+import? Ho un db molto grosso da duplicare e vorrei evitare di > importare 150 mega di query mysql... > > Ho provato a copiare tutti i file .frm da una directory a un'altra, dopo > aver creato il db su mysql, e non funziona (mi fa vedere la lista delle > tabelle con SHOW TABLES, ma se provo a fare una select mi dice che la > tabella non esiste). > Non funziona perché il database information_schema non contiene le informazioni del tuo database. Se il file .sql del dump è troppo grosso... zippalo :) Ciao Marcello From cristiano a verondini.it Tue Aug 28 17:53:18 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Tue, 28 Aug 2007 16:53:18 +0100 Subject: [Db] Duplicare database mysql References: <200708281651.04858.cesare@ngi.it> Message-ID: <00c101c7e98b$8f8e92c0$6301a8c0@IdeaFutura.local> > È possibile in qualche modo, con mysql, duplicare un database SENZA > fare il dump+import? Ho un db molto grosso da duplicare e vorrei > evitare di importare 150 mega di query mysql... Usa: CREATE TABLE new_tbl SELECT * FROM orig_tbl; specificando i nomi tabella come database.tabella -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From cristiano a verondini.it Tue Aug 28 17:54:20 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Tue, 28 Aug 2007 16:54:20 +0100 Subject: [Db] Duplicare database mysql References: <200708281651.04858.cesare@ngi.it> Message-ID: <00c701c7e98b$b474ade0$6301a8c0@IdeaFutura.local> > È possibile in qualche modo, con mysql, duplicare un database SENZA > fare il dump+import? Ho un db molto grosso da duplicare e vorrei > evitare di importare 150 mega di query mysql... Non è poi tantissimo, puoi evitare che occupino disco usando: mysqldump ... | mysql ... -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From cesare a ngi.it Tue Aug 28 17:00:04 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:00:04 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <00c101c7e98b$8f8e92c0$6301a8c0@IdeaFutura.local> References: <200708281651.04858.cesare@ngi.it> <00c101c7e98b$8f8e92c0$6301a8c0@IdeaFutura.local> Message-ID: <200708281700.04300.cesare@ngi.it> Alle martedì 28 agosto 2007, Cristiano Verondini ha scritto: > > È possibile in qualche modo, con mysql, duplicare un database SENZA > > fare il dump+import? Ho un db molto grosso da duplicare e vorrei > > evitare di importare 150 mega di query mysql... > >     Usa: >             CREATE TABLE new_tbl SELECT * FROM orig_tbl; > >     specificando i  nomi tabella come database.tabella Conoscevo questa via ma speravo in qualcosa di più rapido :-P Grazie mille cmq, ciaps ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cesare a ngi.it Tue Aug 28 17:00:50 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:00:50 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <46D43730.8020002@vezz.it> References: <200708281651.04858.cesare@ngi.it> <46D43730.8020002@vezz.it> Message-ID: <200708281700.50545.cesare@ngi.it> Alle martedì 28 agosto 2007, Marcello Vezzelli ha scritto: > Non funziona perché il database information_schema non contiene le > informazioni del tuo database. Azz, giusto. > Se il file .sql del dump è troppo grosso... zippalo :) LOL È un po' troppo pesante da far digerire al db (nel senso che ci impiega un bel po') ;) Ciaps, grazie ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cesare a ngi.it Tue Aug 28 17:05:03 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:05:03 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <200708281700.04300.cesare@ngi.it> References: <200708281651.04858.cesare@ngi.it> <00c101c7e98b$8f8e92c0$6301a8c0@IdeaFutura.local> <200708281700.04300.cesare@ngi.it> Message-ID: <200708281705.03943.cesare@ngi.it> Alle martedì 28 agosto 2007, Cesare D'Amico ha scritto: > Alle martedì 28 agosto 2007, Cristiano Verondini ha scritto: > > > È possibile in qualche modo, con mysql, duplicare un database > > > SENZA fare il dump+import? Ho un db molto grosso da duplicare e > > > vorrei evitare di importare 150 mega di query mysql... > > > >     Usa: > >             CREATE TABLE new_tbl SELECT * FROM orig_tbl; > > > >     specificando i  nomi tabella come database.tabella > > Conoscevo questa via ma speravo in qualcosa di più rapido :-P Molto più veloce del previsto: mysql> CREATE TABLE giacenze SELECT * FROM assist_va.giacenze; Query OK, 464929 rows affected (7.74 sec) Per importare la stessa tabella dal dump ci ha messo svariati minuti... Ottimo ;) Ciaps ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cesare a ngi.it Tue Aug 28 17:06:35 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:06:35 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <200708281705.03943.cesare@ngi.it> References: <200708281651.04858.cesare@ngi.it> <200708281700.04300.cesare@ngi.it> <200708281705.03943.cesare@ngi.it> Message-ID: <200708281706.36096.cesare@ngi.it> Alle martedì 28 agosto 2007, Cesare D'Amico ha scritto: > > Molto più veloce del previsto: > > mysql> CREATE TABLE giacenze SELECT * FROM assist_va.giacenze; > Query OK, 464929 rows affected (7.74 sec) > > Per importare la stessa tabella dal dump ci ha messo svariati > minuti... > > Ottimo ;) ...però come mi ricordavo non mantiene le chiavi, gli indici, le foreign key e il type=InnoDB delle tabelle :( :( :( -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cristiano a verondini.it Tue Aug 28 18:03:07 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Tue, 28 Aug 2007 17:03:07 +0100 Subject: [Db] Duplicare database mysql References: <200708281651.04858.cesare@ngi.it><200708281700.04300.cesare@ngi.it><200708281705.03943.cesare@ngi.it> <200708281706.36096.cesare@ngi.it> Message-ID: <00d301c7e98c$eed79eb0$6301a8c0@IdeaFutura.local> >> mysql> CREATE TABLE giacenze SELECT * FROM assist_va.giacenze; >> Query OK, 464929 rows affected (7.74 sec) >> >> Per importare la stessa tabella dal dump ci ha messo svariati >> minuti... >> >> Ottimo ;) > > ...però come mi ricordavo non mantiene le chiavi, gli indici, le > foreign key e il type=InnoDB delle tabelle :( :( :( Usa mysqldump per ricreare solo la struttura del DB, poi SELECT/INTO per popolare le tabelle. -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Tue Aug 28 17:06:47 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Tue, 28 Aug 2007 17:06:47 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <200708281706.36096.cesare@ngi.it> References: <200708281651.04858.cesare@ngi.it> <200708281700.04300.cesare@ngi.it> <200708281705.03943.cesare@ngi.it> <200708281706.36096.cesare@ngi.it> Message-ID: <46D43A07.3080208@vezz.it> Cesare D'Amico ha scritto: > > ...però come mi ricordavo non mantiene le chiavi, gli indici, le foreign > key e il type=InnoDB delle tabelle :( :( :( > Perché non usi phpmyadmin? Ciao Marcello From cesare a ngi.it Tue Aug 28 17:40:05 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:40:05 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <00d301c7e98c$eed79eb0$6301a8c0@IdeaFutura.local> References: <200708281651.04858.cesare@ngi.it> <200708281706.36096.cesare@ngi.it> <00d301c7e98c$eed79eb0$6301a8c0@IdeaFutura.local> Message-ID: <200708281740.05868.cesare@ngi.it> Alle martedì 28 agosto 2007, Cristiano Verondini ha scritto: >     Usa mysqldump per ricreare solo la struttura del DB, poi > SELECT/INTO per popolare le tabelle. Non vedo una opzione del genere. Sei sicuro che ci sia? -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cesare a ngi.it Tue Aug 28 17:40:23 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Tue, 28 Aug 2007 17:40:23 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <46D43A07.3080208@vezz.it> References: <200708281651.04858.cesare@ngi.it> <200708281706.36096.cesare@ngi.it> <46D43A07.3080208@vezz.it> Message-ID: <200708281740.23762.cesare@ngi.it> Alle martedì 28 agosto 2007, Marcello Vezzelli ha scritto: > Cesare D'Amico ha scritto: > > ...però come mi ricordavo non mantiene le chiavi, gli indici, le > > foreign key e il type=InnoDB delle tabelle :( :( :( > > Perché non usi phpmyadmin? Non è installato né installabile ;( -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From cristiano a verondini.it Thu Aug 30 12:40:30 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Thu, 30 Aug 2007 11:40:30 +0100 Subject: [Db] Duplicare database mysql References: <200708281651.04858.cesare@ngi.it><200708281706.36096.cesare@ngi.it><00d301c7e98c$eed79eb0$6301a8c0@IdeaFutura.local> <200708281740.05868.cesare@ngi.it> Message-ID: <010c01c7eaf2$322a32c0$6301a8c0@IdeaFutura.local> Cesare D'Amico wrote: > Alle martedì 28 agosto 2007, Cristiano Verondini ha scritto: >> Usa mysqldump per ricreare solo la struttura del DB, poi >> SELECT/INTO per popolare le tabelle. > > Non vedo una opzione del genere. Sei sicuro che ci sia? Usa l'opzione --no-data Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From cesare a ngi.it Thu Aug 30 12:14:16 2007 From: cesare a ngi.it (Cesare D'Amico) Date: Thu, 30 Aug 2007 12:14:16 +0200 Subject: [Db] Duplicare database mysql In-Reply-To: <010c01c7eaf2$322a32c0$6301a8c0@IdeaFutura.local> References: <200708281651.04858.cesare@ngi.it> <200708281740.05868.cesare@ngi.it> <010c01c7eaf2$322a32c0$6301a8c0@IdeaFutura.local> Message-ID: <200708301214.16527.cesare@ngi.it> Alle giovedì 30 agosto 2007, Cristiano Verondini ha scritto: > > Non vedo una opzione del genere. Sei sicuro che ci sia? > >     Usa l'opzione --no-data Grazie! Non la conoscevo :) Ciaps ce -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it