Thread: ERROR: extra data after last expected column

ERROR: extra data after last expected column

From
Scott Macri
Date:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point.  

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

-- 
Hacktorious



Re: ERROR: extra data after last expected column

From
Sándor Daku
Date:


On Mon, 7 Mar 2022 at 09:34, Scott Macri <Scott@bitsnbytes.io> wrote:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point. 

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

--
Hacktorious


Hi,

I pretty sure it doesn't fail after the  9th column, just the context hint of the error message is cropped after that.
My guess is a sneaky '|' somewhere inside one of your field.

Regards,
Sándor  

Re: ERROR: extra data after last expected column

From
Rob Sargent
Date:
On 3/7/22 02:08, Sándor Daku wrote:


On Mon, 7 Mar 2022 at 09:34, Scott Macri <Scott@bitsnbytes.io> wrote:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point. 

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

--
Hacktorious


Hi,

I pretty sure it doesn't fail after the  9th column, just the context hint of the error message is cropped after that.
My guess is a sneaky '|' somewhere inside one of your field.

Regards,
Sándor 
if Sándor  is correct this will show the offenders
awk -F "|" '{if (NF != 25) print}'


Re: ERROR: extra data after last expected column

From
scott macri
Date:
No luck

On Mon, Mar 7, 2022, 4:58 AM Rob Sargent <robjsargent@gmail.com> wrote:
On 3/7/22 02:08, Sándor Daku wrote:


On Mon, 7 Mar 2022 at 09:34, Scott Macri <Scott@bitsnbytes.io> wrote:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point. 

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

--
Hacktorious


Hi,

I pretty sure it doesn't fail after the  9th column, just the context hint of the error message is cropped after that.
My guess is a sneaky '|' somewhere inside one of your field.

Regards,
Sándor 
if Sándor  is correct this will show the offenders
awk -F "|" '{if (NF != 25) print}'


Re: ERROR: extra data after last expected column

From
Steve Midgley
Date:

On Mon, Mar 7, 2022 at 3:34 PM scott macri <hacktorious@gmail.com> wrote:
No luck

On Mon, Mar 7, 2022, 4:58 AM Rob Sargent <robjsargent@gmail.com> wrote:
On 3/7/22 02:08, Sándor Daku wrote:


On Mon, 7 Mar 2022 at 09:34, Scott Macri <Scott@bitsnbytes.io> wrote:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point. 

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

--
Hacktorious


Hi,

I pretty sure it doesn't fail after the  9th column, just the context hint of the error message is cropped after that.
My guess is a sneaky '|' somewhere inside one of your field.

Regards,
Sándor 
if Sándor  is correct this will show the offenders
awk -F "|" '{if (NF != 25) print}'



Can you send the CSV file that is causing the problem as a CSV file attachment so some of us can try this as a full reproduction? I don't want to copy/paste the sample line from the text of the email as it seems like that wouldn't be a good replication path for such a weird bug..

Steve 

Re: ERROR: extra data after last expected column

From
Steve Midgley
Date:


On Mon, Mar 7, 2022 at 3:54 PM Steve Midgley <science@misuse.org> wrote:

On Mon, Mar 7, 2022 at 3:34 PM scott macri <hacktorious@gmail.com> wrote:
No luck

On Mon, Mar 7, 2022, 4:58 AM Rob Sargent <robjsargent@gmail.com> wrote:
On 3/7/22 02:08, Sándor Daku wrote:


On Mon, 7 Mar 2022 at 09:34, Scott Macri <Scott@bitsnbytes.io> wrote:
I'm trying to use the postgres copy command and getting, "extra data
after last expected column".

All items in the DB are currently set to varchar(255) to make it
simple.  I've checked for hidden characters in the file and don't see
any.  All the other files I've processed with this exact command worked
perfectly.  I've processed 10 other's so far.  The only difference I
notice is this one has significantly more columns.

The number of columns in the DB (25) exactly match the number of
columns in the csv (25), which exactly match the number of columns
defined in my COPY command (25).  I've read practically every post on
the internet over the last two days containg this error and cannot
resolve it.  I am completely stumped at this point. 

It pukes after the 9th column every time no matter what I change.

COPY option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER '|', ENCODING
'UTF8');

Row one data in file is below:
item a | item b | item c | item d | item e | item f | item g | item h |
item i | item j | item k | item l | item m | item n | item o | item p |
item q | item r | item s | item t | item u | item v | item w | item x |
item y
--- Line two would normally start here but no reason to show since it's
failing above. ---

I get the following error:
ERROR:  extra data after last expected column
CONTEXT:  COPY option_details, line 1: "item a|item b|item c|item
d|item e|item f|item g|item h|item i|..."


Any help or advice would be greatly appreciated.  Thank you very much.

--
Hacktorious


Hi,

I pretty sure it doesn't fail after the  9th column, just the context hint of the error message is cropped after that.
My guess is a sneaky '|' somewhere inside one of your field.

Regards,
Sándor 
if Sándor  is correct this will show the offenders
awk -F "|" '{if (NF != 25) print}'



Can you send the CSV file that is causing the problem as a CSV file attachment so some of us can try this as a full reproduction? I don't want to copy/paste the sample line from the text of the email as it seems like that wouldn't be a good replication path for such a weird bug..


Also, have you tried ASCII encoding or something very permissive like that? If that works but UTF-8 doesn't, it might be a clue that there's an errant char buried in your CSV file. Also, maybe try looking at your CSV file with a hex editor.. The weirdest stuff can turn up in "wild caught" CSVs.. 

Re: ERROR: extra data after last expected column

From
Scott Macri
Date:
On Mon, 2022-03-07 at 15:56 -0800, Steve Midgley wrote:
> 
> 
> On Mon, Mar 7, 2022 at 3:54 PM Steve Midgley <science@misuse.org>
> wrote:
> > 
> > On Mon, Mar 7, 2022 at 3:34 PM scott macri <hacktorious@gmail.com>
> > wrote:
> > > No luck
> > > 
> > > On Mon, Mar 7, 2022, 4:58 AM Rob Sargent <robjsargent@gmail.com>
> > > wrote:
> > > > On 3/7/22 02:08, Sándor Daku wrote:
> > > >  
> > > > > 
> > > > >  
> > > > > On Mon, 7 Mar 2022 at 09:34, Scott Macri
> > > > > <Scott@bitsnbytes.io> wrote:
> > > > >  
> > > > > > I'm trying to use the postgres copy command and getting,
> > > > > > "extra data
> > > > > >  after last expected column".
> > > > > >  
> > > > > >  All items in the DB are currently set to varchar(255) to
> > > > > > make it
> > > > > >  simple.  I've checked for hidden characters in the file
> > > > > > and don't see
> > > > > >  any.  All the other files I've processed with this exact
> > > > > > command worked
> > > > > >  perfectly.  I've processed 10 other's so far.  The only
> > > > > > difference I
> > > > > >  notice is this one has significantly more columns.
> > > > > >  
> > > > > >  The number of columns in the DB (25) exactly match the
> > > > > > number of
> > > > > >  columns in the csv (25), which exactly match the number of
> > > > > > columns
> > > > > >  defined in my COPY command (25).  I've read practically
> > > > > > every post on
> > > > > >  the internet over the last two days containg this error
> > > > > > and cannot
> > > > > >  resolve it.  I am completely stumped at this point.  
> > > > > >  
> > > > > >  It pukes after the 9th column every time no matter what I
> > > > > > change.
> > > > > >  
> > > > > >  COPY
> > > > > > option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,
> > > > > > w,x,y)
> > > > > >  FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER
> > > > > > '|', ENCODING
> > > > > >  'UTF8');
> > > > > >  
> > > > > >  Row one data in file is below:
> > > > > >  item a | item b | item c | item d | item e | item f | item
> > > > > > g | item h |
> > > > > >  item i | item j | item k | item l | item m | item n | item
> > > > > > o | item p |
> > > > > >  item q | item r | item s | item t | item u | item v | item
> > > > > > w | item x |
> > > > > >  item y
> > > > > >  --- Line two would normally start here but no reason to
> > > > > > show since it's
> > > > > >  failing above. ---
> > > > > >  
> > > > > >  I get the following error:
> > > > > >  ERROR:  extra data after last expected column
> > > > > >  CONTEXT:  COPY option_details, line 1: "item a|item b|item
> > > > > > c|item
> > > > > >  d|item e|item f|item g|item h|item i|..."
> > > > > >  
> > > > > >  
> > > > > >  Any help or advice would be greatly appreciated.  Thank
> > > > > > you very much.
> > > > > >  
> > > > > >  -- 
> > > > > >  Hacktorious
> > > > > >  
> > > > > > 
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > I pretty sure it doesn't fail after the  9th column, just the
> > > > > context hint of the error message is cropped after that.
> > > > > My guess is a sneaky '|' somewhere inside one of your field.
> > > > > 
> > > > > Regards,
> > > > > Sándor  
> > > >  if Sándor  is correct this will show the offenders
> > > >  awk -F "|" '{if (NF != 25) print}'
> > > >  
> > > >  
> > > 
> > 
> > 
> > Can you send the CSV file that is causing the problem as a CSV file
> > attachment so some of us can try this as a full reproduction? I
> > don't want to copy/paste the sample line from the text of the email
> > as it seems like that wouldn't be a good replication path for such
> > a weird bug..
> > 
> > 
> 
> 
> Also, have you tried ASCII encoding or something very permissive like
> that? If that works but UTF-8 doesn't, it might be a clue that
> there's an errant char buried in your CSV file. Also, maybe try
> looking at your CSV file with a hex editor.. The weirdest stuff can
> turn up in "wild caught" CSVs.. 

So I guess when I ran: 
awk -F "|" '{if (NF != 25) print}'
the first time it was against the wrong file.  I just tried again and
it produced a bunch of output.  So this is telling me there are extra
'|' in those lines?

-- 
Hacktorious



Re: ERROR: extra data after last expected column

From
Scott Macri
Date:
It looks like it might have something to do with the line length.  All
the output from the AWK command are a continuation of the line above
it.  There is no line break, however.  I'm investigating now.


On Mon, 2022-03-07 at 15:56 -0800, Steve Midgley wrote:
> 
> 
> On Mon, Mar 7, 2022 at 3:54 PM Steve Midgley <science@misuse.org>
> wrote:
> > 
> > On Mon, Mar 7, 2022 at 3:34 PM scott macri <hacktorious@gmail.com>
> > wrote:
> > > No luck
> > > 
> > > On Mon, Mar 7, 2022, 4:58 AM Rob Sargent <robjsargent@gmail.com>
> > > wrote:
> > > > On 3/7/22 02:08, Sándor Daku wrote:
> > > >  
> > > > > 
> > > > >  
> > > > > On Mon, 7 Mar 2022 at 09:34, Scott Macri
> > > > > <Scott@bitsnbytes.io> wrote:
> > > > >  
> > > > > > I'm trying to use the postgres copy command and getting,
> > > > > > "extra data
> > > > > >  after last expected column".
> > > > > >  
> > > > > >  All items in the DB are currently set to varchar(255) to
> > > > > > make it
> > > > > >  simple.  I've checked for hidden characters in the file
> > > > > > and don't see
> > > > > >  any.  All the other files I've processed with this exact
> > > > > > command worked
> > > > > >  perfectly.  I've processed 10 other's so far.  The only
> > > > > > difference I
> > > > > >  notice is this one has significantly more columns.
> > > > > >  
> > > > > >  The number of columns in the DB (25) exactly match the
> > > > > > number of
> > > > > >  columns in the csv (25), which exactly match the number of
> > > > > > columns
> > > > > >  defined in my COPY command (25).  I've read practically
> > > > > > every post on
> > > > > >  the internet over the last two days containg this error
> > > > > > and cannot
> > > > > >  resolve it.  I am completely stumped at this point.  
> > > > > >  
> > > > > >  It pukes after the 9th column every time no matter what I
> > > > > > change.
> > > > > >  
> > > > > >  COPY
> > > > > > option_details(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,
> > > > > > w,x,y)
> > > > > >  FROM '/home/dump/my_csv.csv' WITH (FORMAT CSV, DELIMITER
> > > > > > '|', ENCODING
> > > > > >  'UTF8');
> > > > > >  
> > > > > >  Row one data in file is below:
> > > > > >  item a | item b | item c | item d | item e | item f | item
> > > > > > g | item h |
> > > > > >  item i | item j | item k | item l | item m | item n | item
> > > > > > o | item p |
> > > > > >  item q | item r | item s | item t | item u | item v | item
> > > > > > w | item x |
> > > > > >  item y
> > > > > >  --- Line two would normally start here but no reason to
> > > > > > show since it's
> > > > > >  failing above. ---
> > > > > >  
> > > > > >  I get the following error:
> > > > > >  ERROR:  extra data after last expected column
> > > > > >  CONTEXT:  COPY option_details, line 1: "item a|item b|item
> > > > > > c|item
> > > > > >  d|item e|item f|item g|item h|item i|..."
> > > > > >  
> > > > > >  
> > > > > >  Any help or advice would be greatly appreciated.  Thank
> > > > > > you very much.
> > > > > >  
> > > > > >  -- 
> > > > > >  Hacktorious
> > > > > >  
> > > > > > 
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > I pretty sure it doesn't fail after the  9th column, just the
> > > > > context hint of the error message is cropped after that.
> > > > > My guess is a sneaky '|' somewhere inside one of your field.
> > > > > 
> > > > > Regards,
> > > > > Sándor  
> > > >  if Sándor  is correct this will show the offenders
> > > >  awk -F "|" '{if (NF != 25) print}'
> > > >  
> > > >  
> > > 
> > 
> > 
> > Can you send the CSV file that is causing the problem as a CSV file
> > attachment so some of us can try this as a full reproduction? I
> > don't want to copy/paste the sample line from the text of the email
> > as it seems like that wouldn't be a good replication path for such
> > a weird bug..
> > 
> > 
> 
> 
> Also, have you tried ASCII encoding or something very permissive like
> that? If that works but UTF-8 doesn't, it might be a clue that
> there's an errant char buried in your CSV file. Also, maybe try
> looking at your CSV file with a hex editor.. The weirdest stuff can
> turn up in "wild caught" CSVs.. 

-- 
Hacktorious



Re: ERROR: extra data after last expected column

From
Rob Sargent
Date:
On 3/7/22 18:51, Scott Macri wrote:
> It looks like it might have something to do with the line length.  All
> the output from the AWK command are a continuation of the line above
> it.  There is no line break, however.  I'm investigating now.
>
>
> So I guess when I ran:
> awk -F "|" '{if (NF != 25) print}'
> the first time it was against the wrong file.  I just tried again and
> it produced a bunch of output.  So this is telling me there are extra
> '|' in those lines?
>
> -- Hacktorious

Can't tell for sure but could be mac/dos/unix EOLN mixup. Some tools are 
better than others in dealing with a mixture of those.





Re: ERROR: extra data after last expected column

From
scott macri
Date:


On Mon, Mar 7, 2022, 9:40 PM Rob Sargent <robjsargent@gmail.com> wrote:
On 3/7/22 18:51, Scott Macri wrote:
> It looks like it might have something to do with the line length.  All
> the output from the AWK command are a continuation of the line above
> it.  There is no line break, however.  I'm investigating now.
>
>
> So I guess when I ran:
> awk -F "|" '{if (NF != 25) print}'
> the first time it was against the wrong file.  I just tried again and
> it produced a bunch of output.  So this is telling me there are extra
> '|' in those lines?
>
> -- Hacktorious

Can't tell for sure but could be mac/dos/unix EOLN mixup. Some tools are
better than others in dealing with a mixture of those.

I found an extra pipe character at the end of each line.   It seems like the data coming from the sender is messed up.   Gotta take a closer look tomorrow and determine the best plan of action.