using the "copy from" command

Started by Knepper, Michelleabout 22 years ago5 messagesgeneral
Jump to latest
#1Knepper, Michelle
mknepper@intellidot.net

Hi,

I'm a first-time user of the "Copy ... From..." command, and I'm trying
to load a table from a text flat file.

http://www.postgresql.org/docs/7.4/static/sql-copy.html

I'm getting the following error. Any help will be appreciated. Thank
you.

[mknepper@barney datafiles]$ psql -U postgres medispan
Welcome to psql 7.3.4, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

medispan=# copy mmw_ade_com from
'/home/mknepper/medispan/datafiles/mmwadecom.txt' with delimiter '|';
": can't parse "ne 1, pg_atoi: error in "14608
medispan=#

Table schema:

CREATE TABLE mmw_ade_com
(
gpi VARCHAR(14) NOT NULL,
mcid INTEGER NOT NULL,
restrictionid INTEGER NOT NULL,
sequencenumber SMALLINT NOT NULL,
textid INTEGER,
PRIMARY KEY (gpi, mcid, restrictionid, sequencenumber)
);

example of data, from the TXT flat file, called mmwadecom.txt:

01100040100310|5|0|10|14608
01100040100310|8|0|10|17377
01100040100310|8|0|20|18061
01100040100310|8|0|30|14608
01100040100310|22|0|10|18025
01100040100310|30|0|10|14608
01100040100310|36|0|10|14608
01100040100310|115|0|10|13937
01100040100310|115|0|20|18041

#2Joe Conway
mail@joeconway.com
In reply to: Knepper, Michelle (#1)
Re: using the "copy from" command

Knepper, Michelle wrote:

medispan=# copy mmw_ade_com from
'/home/mknepper/medispan/datafiles/mmwadecom.txt' with delimiter '|';
": can't parse "ne 1, pg_atoi: error in "14608

Looks like bad data in line 14608. What does that line of your input
file look like?

Joe

#3Joe Conway
mail@joeconway.com
In reply to: Joe Conway (#2)
Re: using the "copy from" command

Joe Conway wrote:

Knepper, Michelle wrote:

medispan=# copy mmw_ade_com from
'/home/mknepper/medispan/datafiles/mmwadecom.txt' with delimiter '|';
": can't parse "ne 1, pg_atoi: error in "14608

Looks like bad data in line 14608. What does that line of your input
file look like?

Strike that -- it actually is a problem in line 1, isn't it (you cut off
the line number in the error message above)? It might be end-of-line
character problem. Was your input file created or edited on Windows by
chance (i.e. ends in \r\n instead of \n)?

Joe

#4Knepper, Michelle
mknepper@intellidot.net
In reply to: Joe Conway (#3)
Re: using the "copy from" command

Thanks Joe!
I converted the text file to Unix, using EditPadPro, to get
rid of all the Windows characters. Got rid of any \r and end-of-line
stuff.
And the copy command worked beautifully. It entered all of the data
into the table.

Simple thing to do, but new to me.

Ciao. ;-)

-----Original Message-----
From: Joe Conway [mailto:mail@joeconway.com]
Sent: Monday, March 01, 2004 2:28 PM
To: Knepper, Michelle
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] using the "copy from" command

Joe Conway wrote:

Knepper, Michelle wrote:

medispan=# copy mmw_ade_com from
'/home/mknepper/medispan/datafiles/mmwadecom.txt' with delimiter '|';
": can't parse "ne 1, pg_atoi: error in "14608

Looks like bad data in line 14608. What does that line of your input
file look like?

Strike that -- it actually is a problem in line 1, isn't it (you cut off

the line number in the error message above)? It might be end-of-line
character problem. Was your input file created or edited on Windows by
chance (i.e. ends in \r\n instead of \n)?

Joe

#5Knepper, Michelle
mknepper@intellidot.net
In reply to: Knepper, Michelle (#4)
Re: using the "copy from" command

Yes, I tried using this: tr -d '\r' < datafile
but it didn't get rid of all the other ascii stuff, of course, since I
only indicated '\r'.

Here's another linux command that I used to convert all of my files to
Unix,
instead of, converting them file by file, via EditPadPro:

find . -name "*.txt" | xargs dos2unix

This converted all the .txt files, within the current directory.

Thanks.

-----Original Message-----
From: Karl O. Pinc [mailto:kop@meme.com]
Sent: Tuesday, March 02, 2004 12:44 PM
To: Knepper, Michelle
Subject: Re: [GENERAL] using the "copy from" command

FYI, you can feed the file through sed or tr. The only wierd
thing is specifying a \r in shell. I know that $'\r' will do
it in bash. The commands may have an easier way...

On 2004.03.02 12:11 "Knepper, Michelle" wrote:

Thanks Joe!
I converted the text file to Unix, using EditPadPro, to get
rid of all the Windows characters. Got rid of any \r and end-of-line
stuff.
And the copy command worked beautifully. It entered all of the data
into the table.

Simple thing to do, but new to me.

Ciao. ;-)

-----Original Message-----
From: Joe Conway [mailto:mail@joeconway.com]
Sent: Monday, March 01, 2004 2:28 PM
To: Knepper, Michelle
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] using the "copy from" command

Joe Conway wrote:

Knepper, Michelle wrote:

medispan=# copy mmw_ade_com from
'/home/mknepper/medispan/datafiles/mmwadecom.txt' with delimiter

'|';

": can't parse "ne 1, pg_atoi: error in "14608

Looks like bad data in line 14608. What does that line of your input

file look like?

Strike that -- it actually is a problem in line 1, isn't it (you cut
off

the line number in the error message above)? It might be end-of-line
character problem. Was your input file created or edited on Windows by

chance (i.e. ends in \r\n instead of \n)?

Joe

---------------------------(end of
broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Karl <kop@meme.com>
Free Software: "You don't pay back, you pay forward."
-- Robert A. Heinlein