Thread: ...
I have a flat text file that is pipe delimited that I am trying to load in a postgresql table. The data is in the following format: COLUMN_NAME;value|COLUMN_NAME;value| ... etc I read each line of the file into an array (in perl) and then load each member of the array into a hash. The reason for all of this is that I need to convert some of the values and a hash seems to be the easiest way to manage the data. After all changes are commplete I use the hash to feed my DBI insert statement. When I do I get the following error: Relation 'TABLE_NAME' does not have attribute 'COLUMN_NAME' I modified my script to print out the SQL that it is trying to execute and it is in what I believe to be the correct format. The format is as follows: insert into TABLE_NAME (COLUMN_NAME, COLUMN_NAME, COLUMN_NAME) VALUES ('value', 'value', 'value') It looks to me like it is saying that the column specified by COLUMN_NAME does not exsist but when I do a \dt TABLE_NAME it is there. Because I loaded the data into a hash the COLUMN_NAME's are not in the same order as they appear in the database but from reading the docs it looks to me that all long as the COLUMN_NAME's I put in my insert statement match up with the values I should be OK (this is how it worked when I was using mysql). I thought that maybe I did not have write perms on the table all seems to be fine there also. I also tried cutting and pasting the SQL generated by my script into a psql window and got the same error. Thanks for any insight, I am at a loss jth
Try using "copy" instead of "insert" ? Salustiano J.T. Hartzler wrote: > I have a flat text file that is pipe delimited that I am trying to load in > a postgresql table. The data is in the following format: > > COLUMN_NAME;value|COLUMN_NAME;value| ... etc > > I read each line of the file into an array (in perl) and then load each > member of the array into a hash. The reason for all of this is that I > need to convert some of the values and a hash seems to be the easiest way > to manage the data. After all changes are commplete I use the hash to > feed my DBI insert statement. When I do I get the following error: > > Relation 'TABLE_NAME' does not have attribute 'COLUMN_NAME' > > I modified my script to print out the SQL that it is trying to execute and > it is in what I believe to be the correct format. The format is as > follows: > > insert into TABLE_NAME (COLUMN_NAME, COLUMN_NAME, COLUMN_NAME) VALUES > ('value', 'value', 'value') > > It looks to me like it is saying that the column specified by > COLUMN_NAME does not exsist but when I do a \dt TABLE_NAME it is > there. Because I loaded the data into a hash the COLUMN_NAME's are not in > the same order as they appear in the database but from reading the docs it > looks to me that all long as the COLUMN_NAME's I put in my insert > statement match up with the values I should be OK (this is how it worked > when I was using mysql). I thought that maybe I did not have write perms > on the table all seems to be fine there also. I also tried cutting and > pasting the SQL generated by my script into a psql window and got the same > error. > > Thanks for any insight, I am at a loss > > jth > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > >
"J.T. Hartzler" <dba@wap.ntelos.com> writes: > It looks to me like it is saying that the column specified by > COLUMN_NAME does not exsist but when I do a \dt TABLE_NAME it is > there. And spelled how, exactly? I'm betting on a case-sensitivity issue here. Unquoted identifiers in SQL commands fold to lower case. regards, tom lane
That is what the problem was. I was not double quoting the colomn names. Thanks for the info. On Thu, 25 Jul 2002, Tom Lane wrote: > "J.T. Hartzler" <dba@wap.ntelos.com> writes: > > It looks to me like it is saying that the column specified by > > COLUMN_NAME does not exsist but when I do a \dt TABLE_NAME it is > > there. > > And spelled how, exactly? I'm betting on a case-sensitivity issue > here. Unquoted identifiers in SQL commands fold to lower case. > > regards, tom lane >