Best import approach? Delimiters in strings

Started by Andrew Taylorabout 13 years ago7 messagesgeneral
Jump to latest
#1Andrew Taylor
andydtaylor@gmail.com

Hi,

A bulk import (script attached) is failing.

Error message:
psql:/home/andyt/projects/django-stringer/txc/stops_inport.txt:86: ERROR:
invalid input syntax for type double precision: "stop_lat"

I think the reason may be a delimiters in strings such as "Golders Green,
Golders Green, stop GW"

490015496GW,"Golders Green, Golders Green, stop GW",,51.57207,-0.19549

What's a good way to handle this?

Thanks,

Andy

Attachments:

stops_inport.txttext/plain; charset=US-ASCII; name=stops_inport.txtDownload
#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Andrew Taylor (#1)
Re: Best import approach? Delimiters in strings

On 02/16/2013 09:02 AM, Andrew Taylor wrote:

Hi,

A bulk import (script attached) is failing.

Error message:
psql:/home/andyt/projects/django-stringer/txc/stops_inport.txt:86:
ERROR: invalid input syntax for type double precision: "stop_lat"

I think the reason may be a delimiters in strings such as "Golders
Green, Golders Green, stop GW"

490015496GW,"Golders Green, Golders Green, stop GW",,51.57207,-0.19549

What's a good way to handle this?

What is the command string you are using to import the data?

Thanks,

Andy

--
Adrian Klaver
adrian.klaver@gmail.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3Bret Stern
bret_stern@machinemanagement.com
In reply to: Andrew Taylor (#1)
Re: Best import approach? Delimiters in strings

The first value seems more suspect, should be "490015496GW". Mixing
numeric and string values is best enclosed in quotes.

"Golders Green, Golders Green, stop GW" is normal if you want the
entire string between the quotes to arrive in a single column (with
the comma).

On Sat, 2013-02-16 at 17:02 +0000, Andrew Taylor wrote:

Hi,

A bulk import (script attached) is failing.

Error message:
psql:/home/andyt/projects/django-stringer/txc/stops_inport.txt:86:
ERROR: invalid input syntax for type double precision: "stop_lat"

I think the reason may be a delimiters in strings such as "Golders
Green, Golders Green, stop GW"

490015496GW,"Golders Green, Golders Green, stop GW",,51.57207,-0.19549

What's a good way to handle this?

Thanks,

Andy

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#4Andrew Taylor
andydtaylor@gmail.com
In reply to: Andrew Taylor (#1)
Re: Best import approach? Delimiters in strings

Unfortunately my starting point is data in the format of that example line.
I hasn't spotted the lack of quotes on the first value. Given this format,
is my best bet to write a script transforming it pre-import to postgres?
I.e. are there no arguments I could pass to the import process to handle
this directly? Thanks
On 16 Feb 2013 17:02, "Andrew Taylor" <andydtaylor@gmail.com> wrote:

Show quoted text

Hi,

A bulk import (script attached) is failing.

Error message:
psql:/home/andyt/projects/django-stringer/txc/stops_inport.txt:86: ERROR:
invalid input syntax for type double precision: "stop_lat"

I think the reason may be a delimiters in strings such as "Golders Green,
Golders Green, stop GW"

490015496GW,"Golders Green, Golders Green, stop GW",,51.57207,-0.19549

What's a good way to handle this?

Thanks,

Andy

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Andrew Taylor (#4)
Re: Best import approach? Delimiters in strings

On 02/16/2013 09:52 AM, Andrew Taylor wrote:

Unfortunately my starting point is data in the format of that example
line. I hasn't spotted the lack of quotes on the first value. Given this
format, is my best bet to write a script transforming it pre-import to
postgres? I.e. are there no arguments I could pass to the import process
to handle this directly? Thanks

Yes, but we need to see the actual import code i.e COPY table_name FROM
file_name

--
Adrian Klaver
adrian.klaver@gmail.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#6Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Andrew Taylor (#4)
Re: Best import approach? Delimiters in strings

On 02/16/2013 09:52 AM, Andrew Taylor wrote:

Unfortunately my starting point is data in the format of that example
line. I hasn't spotted the lack of quotes on the first value. Given this
format, is my best bet to write a script transforming it pre-import to
postgres? I.e. are there no arguments I could pass to the import process
to handle this directly? Thanks

Ignore last post, just found attached file:)

--
Adrian Klaver
adrian.klaver@gmail.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#7Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Andrew Taylor (#4)
Re: Best import approach? Delimiters in strings

On 02/16/2013 09:52 AM, Andrew Taylor wrote:

Unfortunately my starting point is data in the format of that example
line. I hasn't spotted the lack of quotes on the first value. Given this
format, is my best bet to write a script transforming it pre-import to
postgres? I.e. are there no arguments I could pass to the import process
to handle this directly? Thanks

Right now you are processing as text so:

http://www.postgresql.org/docs/9.2/interactive/sql-copy.html

Text Format

...Backslash characters (\) can be used in the COPY data to quote data
characters that might otherwise be taken as row or column delimiters. In
particular, the following characters must be preceded by a backslash if
they appear as part of a column value: backslash itself, newline,
carriage return, and the current delimiter character...

Option 1

If you want to continue to do that you need to escape the delimiter
character or create the *.txt file with a different delimiter, I usually
use '|'.

Option 2
Use the CSV format. By default the delimiter character is a comma and
the quote character is ". So

copy STOPS_LondonBuses from
'/home/andyt/projects/django-stringer/txc/OId_HY/GTFS/stops.txt' WITH
FORMAT csv;

--
Adrian Klaver
adrian.klaver@gmail.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general