Ciao a tutti, ho uno strano problema (dovuto soprattutto alla mia ignoranza...).select * from dataset _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
giusto per aggiornare... se da QGIS uso l'icona di SL per aggiungere i vettori e imposto un filtro in modo da avere lo stesso risultato della query fatta in DB manager non ci sono problemi con i campi numerici (sono riconosciuti come DOUBLE).Il giorno 7 marzo 2015 11:33, Matteo Ghetta <[hidden email]> ha scritto:
_______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
però mi è stato suggerito che il problema potrebbe essere dovuto a una 'limitazione' di SQlite, ovvero ai datatype a questo punto, visto che il problema (a mio avviso) non è di poco conto, c'è un modo di: fare la query e importare i campi NUMERIC ma trasformandoli in REAL?http://www.sqlite.org/datatype3.html Il giorno 7 marzo 2015 19:50, Matteo Ghetta <[hidden email]> ha scritto:
_______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
On Wed, 11 Mar 2015 12:29:03 +0100, Matteo Ghetta wrote:
> ho aperto un ticket in proposito > > http://hub.qgis.org/issues/12356 [2] > > però mi è stato suggerito che il problema potrebbe essere dovuto a > una 'limitazione' di SQlite, ovvero ai datatype > > http://www.sqlite.org/datatype3.html [3] > > a questo punto, visto che il problema (a mio avviso) non è di poco > conto, c'è un modo di: fare la query e importare i campi NUMERIC ma > trasformandoli in REAL? > Ciao Matteo, giusto per aiutarri a capire meglio: - SQLite ha un'architettura innovativa, che non necessariemente ricalca quella p.es. di PostgeSQL (anzi, di fatto siamo decisamente agli antipodi). - SQLite (volutamente, per una precisa scelta di progetto) non supporta i data-types a livello di colonna, ma solo a livello di singola cella: in questo assomiglia molto piu' ad uno spreadsheet che ad un DBMS convenzionale. e conseguentemente tutte le dichiarazioni di tipo che appaiono p.es. in una CREATE TABLE hanno mero valore "estetico/decorativo", ma sono prive di effetti pratici. giusto per fare un esempio spicciolo; questa e' un'operazione perfettamente legittima in SQLite: CREATE TABLE test1 ( col1 INTEGER, col2 VARCHAR(25), col3 PINCOPALLINO(400), col4 TRULLALLERO); SQLite non batte ciglio; per lui PINCOPALLINO e TRULLALERO sono nomi di data-type assolutamente validi proprio come INTEGER e VARCHAR, nel senso che ignora come assolutamente irrilevanti sia gli uni che gli altri. INSERT INTO test1 VALUES (1, 2, 3, 4); INSERT INTO test1 VALUES ('uno', 'due', 'tre', 'quattro'); entrambe queste INSERT INTO funzionano perfettamente sotto SQLite, sempre perche' le dichiarazioni del tipo a livello di colonna sono completamente irrilevanti e vengono praticamente ignorate. naturalmente i data-types ci sono, ma li trovi direttamente a livello di ciascun singolo valore-cella; celle della medesima colonna possono liberamente adottare data-types diversi in ciascuna riga. SQLite supporta solo ed esclusivamente questi cinque tipi: - SQLITE_INTEGER: interi a 8, 16, 32 o 64 bit (decide dinamicamente in base al numero di cifre lo spazio di allocazione ottimale) - SQLITE_DOUBLE: floating point a doppia precisione (64 bit) - SQLITE_TEXT: stringhe di testo fino a circa 1 miliardo di caratteri. - SQLITE_BLOB: stringhe binarie fino a circa 1 miliardo di bytes. - SQLITE_NULL come vedi, il datatype NUMERIC non esiste affatto (e personalmente non ho la piu' pallida idea di cosa possa intendere QGIS) rileggendo le tue mail precedenti, mi pare di capire che il problema non ti si presenta se alimenti il DB SQLite tramite SpatiaLite GUI (e che ti imposta un tipo DOUBLE). immagino quindi che il problema sia sostanzialmente da identificarsi al livello degli strumenti che hai usato per alimentare il DB, e che introducono lo stravagante tipo NUMERIC ... parrebbe l'ipotesi piu' probabile. puoi comunque fare una verifica abbastanza semplice: SELECT typeof(col1), typeof(col2), typeof(col3) FROM qualchetavola; typeof() ti ritorna direttamente il datatype utilizzato fisicamente da SQLite per ciascuna cella; in questo modo dovresti poter ricostruire molto facilmente cosa e' relamente accaduto al tuo DBMS, e perche' si comporta diversamente da quello canonico generato da Spatialite-GUI ciao Sandro _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
Spiegazione impeccabile, grazie Sandro!
_______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
Free forum by Nabble | Edit this page |