[Gfoss] Spatialite INSERT INTO errore

Luca Moiana luca_moiana a hotmail.com
Lun 20 Mar 2017 10:13:07 CET


Ciao Sandro,
grazie MILLE dell'analisi e dei consigli.
Utilizzo spatialite gui 1.17.1 su windows 7 enterprise 64bit aziendale, dove non ho diritti di amministrazione.
La tabella cassette è stata importata da GUI
La tabella daaggiungere da xls tramite spatialite GUI

Anche per le query utilizzo la GUI



________________________________
From: a.furieri at lqt.it <a.furieri at lqt.it>
Sent: Friday, March 17, 2017 4:12 PM
To: Luca Moiana
Subject: Re: [Gfoss] Spatialite INSERT INTO errore

On Fri, 17 Mar 2017 15:24:56 +0000, Luca Moiana wrote:
> Queste sono le informazioni che mi restituisce:
>

quindi le tue tavole sono state create suppergiu' cosi':

CREATE TABLE cassette (
     cassetteid INTEGER NOT NULL PRIMARY KEY,
     strno INTEGER,
     linea TEXT,
     sostegno TEXT,
     modello INTEGER,
     altezza NUMERIC,
     direzione TEXT,
     foro_mm NUMERIC,
     anno INTEGER DEFAULT (strftime('%Y','now','localtime')),
     NOTE TEXT,
     regione text);
SELECT AddGeometryColumn('cassette', 'geom', 4326, 'POINT', 'XY');

CREATE TABLE daaggiungere (
   PK_UID INTEGER NOT NULL PRIMARY KEY,
   AOT,
   COD_SOSTEG,
   COD_LINEA,
   Denom_line,
   Regione,
   PROVINCIA,
   COMUNE,
   N_sostegno,
   Tipo_soste,
   N_cassetta,
   Mod_casset,
   H_cassetta,
   Orientamen,
   Diam_foro,
   NOTE,
   anno,
   CENSIMENTO,
   verifica,
   col_18,
   strno text);
SELECT AddGeometryColumn('daaggiungere', 'geom', 4326, 'POINT', 'XY');

nota: il fatto che praticamente tutte le colonne
della tavola "daaggiungere" evitino di specificare
un data-type e' decisamente anomalo e non rispetta
i requisiti base della sintassi standard SQL; comunque
SQLite e' dataless "by design" e se ne frega allegramente.

insert into cassette (strno, NOTE, anno, geom)
select strno, NOTE, anno, geom
from daaggiungere
where COD_SOSTEG not null;

quando vado ad eseguire la tua query iniziale qua da
me gira tutto perfettamente liscio senza errori.
ed e' anche logico che sia cosi' visto che dopo tutte
esiste una colonna denominata "strno" su entrambe
le tavole.

conclusione: il fatto che sulla tua installazione
locale invece ritorni un messaggio:
"SQL error: no such table: main.strno"
non sembra essere giustificato.

tiro ad indovinare alla cieca: per caso stai usando
spatialite_gui ? e magari usi taglia&incolla per
copiare le tue query SQL da una parte all'altra ?
se e' cosi' tiene sempre presente che il taglia&incolla
abbastanza spesso puo' "sporcare" il testo introducendo
caratteracci strani (anche invisibili) che poi rendono
sintatticamente invalido lo statement SQL.

suppergiu' la stessa cosa potrebbe accadere se stai
usando Python (o qualsiasi altro linguaggio di
programmazione): non dare mai per scontato che le
stringa di query giunga tale e quale a SQLite, si
potrebbe sempre infilare nel mezzo il linguaggio
oppure il data connector cambiando le carte in
tavola senza che tu ne sia consapevole.

insomma, non sarebbe male saperne di piu' su quale
sistema operativo e quali strumenti stai usando.

ciao Sandro


Maggiori informazioni sulla lista Gfoss