Обсуждение: syntax issue with insert statement

Поиск
Список
Период
Сортировка

syntax issue with insert statement

От
David Bear
Дата:
I'm in process of migrating data. That means lots of data munging.

I decided that while I'm coding I should go ahead and create sql syntax rather
than just some delimited file. So  I produced the following code:

docflow=> INSERT INTO student (first_name, last_name, middle_name, added_by,
    affiliate_id, added_on) VALUES (John, Doe, -, '{john}', 484848484, 02/02/20);

ERROR:  syntax error at or near "," at character 112


I could not get the INSERT statement to work using the column name VALUES
syntax.

So, then I tried:

docflow=> INSERT INTO student VALUES (29394959, David, Doe, _, 09/09/99, '{test}')

That worked.

I though I might have quoting issue, but I'm sticking with lower case
identifiers.

This seems like such a trivial question, but I just cant see where I went
wrong. Maybe I've stared at it too long. Please advise.

--
David Bear
phone:     480-965-8257
fax:     480-965-9189
College of Public Programs/ASU
Wilson Hall 232
Tempe, AZ 85287-0803
 "Beware the IP portfolio, everyone will be suspect of trespassing"

Re: syntax issue with insert statement

От
Michael Fuhr
Дата:
On Thu, Jan 13, 2005 at 10:17:47AM -0700, David Bear wrote:

> I'm in process of migrating data. That means lots of data munging.
>
> I decided that while I'm coding I should go ahead and create sql syntax rather
> than just some delimited file.

If you have a lot of data to load, then using COPY with a delimited
file will be faster than a series of INSERTs.

> So I produced the following code:
>
> docflow=> INSERT INTO student (first_name, last_name, middle_name, added_by,
>     affiliate_id, added_on) VALUES (John, Doe, -, '{john}', 484848484, 02/02/20);
>
> ERROR:  syntax error at or near "," at character 112

You should be quoting the non-numeric values:

INSERT INTO student (first_name, last_name, middle_name, added_by,
affiliate_id, added_on)
VALUES ('John', 'Doe', '-', '{john}', 484848484, '02/02/20');

> So, then I tried:
>
> docflow=> INSERT INTO student VALUES (29394959, David, Doe, _, 09/09/99, '{test}')
>
> That worked.

That's surprising -- what version of PostgreSQL are you using?  Is
something preprocessing your statements before sending them to the
backend?  The non-numeric values should be quoted; failure to do
so should result in errors like 'column "david" does not exist'.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: syntax issue with insert statement

От
Scott Marlowe
Дата:
On Thu, 2005-01-13 at 11:17, David Bear wrote:
> I'm in process of migrating data. That means lots of data munging.
>
> I decided that while I'm coding I should go ahead and create sql syntax rather
> than just some delimited file. So  I produced the following code:
>
> docflow=> INSERT INTO student (first_name, last_name, middle_name, added_by,
>     affiliate_id, added_on) VALUES (John, Doe, -, '{john}', 484848484, 02/02/20);
>
> ERROR:  syntax error at or near "," at character 112
>
>
> I could not get the INSERT statement to work using the column name VALUES
> syntax.
>
> So, then I tried:
>
> docflow=> INSERT INTO student VALUES (29394959, David, Doe, _, 09/09/99, '{test}')
>
> That worked.
>
> I though I might have quoting issue, but I'm sticking with lower case
> identifiers.
>
> This seems like such a trivial question, but I just cant see where I went
> wrong. Maybe I've stared at it too long. Please advise.

Text strings and dates need to be surrounded by single quotes, so your
1st insert should look like:

INSERT INTO student (first_name, last_name, middle_name, added_by,
affiliate_id, added_on)
VALUES ('John', 'Doe', '-', '{john}', 484848484, '02/02/20');