On Sun, 11 Dec 2011 10:01:02 +0000, Account 69 <[email protected]>
wrote:
> Hello,
>
> Just started to use SQLite3 instead of MSAccess within my programming
> environment can hit a problem. I have searched the mailing list and also
> other internet sites for help but could not find any.
>
> In my table I have (for simplicity) 4 columns (ID, Date, HS, AS)
> My data comes from an established hourly CSV file that I receive for the
> last 7 years. In the past I would use VB6 to process the CSV and then
> via a SQL Insert statement I would insert into an MSAccess database (for
> local PC usage) and also a MySQL database (for internet usage)
>
> The table is..
> CREATE TABLE [shopdata] (
> [ID] INTEGER PRIMARY KEY,
> [Date_TS] INTEGER,
> [HS] DOUBLE Default (0),
> [AS] DOUBLE Default (0));
If Date_TS is unique over all imported values, it is a candidate key and
can be used as the primary key, and you wouldn't need the ID column:
CREATE TABLE [shopdata] (
[Date_TS] INTEGER PRIMARY KEY,
[HS] DOUBLE default 0.0,
[AS] DOUBLE default 0.0
);
> When I use the following SQL in my application
>
> INSERT INTO [shopdata] (Date_TS, HS, AS) VALUES ('1012003200','15','9')
> The insert fails with an error of (near "AS": syntax error)
AS is a keyword.
Do not use quotes for numeric values in the VALUES clause to prevent
unnecessary conversions (although they will be stored as integer
anyway).
http://www.sqlite.org/datatype3.html ยง 2.3
INSERT INTO [shopdata]
([Date_TS], [HS], [AS])
VALUES
(1012003200,15,9)
> This has had me stumped for a few days especially as I am getting to
> grips with SQLlite and kept thinking I am doing something wrong.
>
> I messed around late last night and I changed the column name of "AS" to
> "A_S" and the inset works fine and the data is stored in the database.
> To recheck I had not changed the table structure in an other way I
> reverted back to using a column name of "AS" and again I got the SQL
> errors of (near "AS": syntax error)
>
> I tried this also in SQLExpert and the exact same happens. In MSAccess
> and MySQL this column name of "AS" works fine (as has been for 7 years).
Every SQL implementation has its own quirks.
> Is a column name of "AS" a restricted column name in SQLlite? Can anyone
> point me to a webpage that species these restricted column names or is
> this an error on my part somewhere
Indeed, as pointed out by others, AS is a keyword.
You can use it if you quote it with double quotes "" or backticks `` or
brackets [] in _all_ of your statements, as you did in the CREATE TABLE
statements. Avoiding keywords is easier, using A_S is a good solution.
> Thank you.
>
> PS, I do not have control over the incoming CSV, so I have to make any
> changes during processing.
--
Regards,
Kees Nuyt
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users