Обсуждение: using the "copy from" command
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
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
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
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
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