Re: [GENERAL] copy command - date

2007-08-17 Thread Raj A
Thanks again guys =)
I've managed to use temp table to load the data and create new table/s
Now, how do I convert a text field with 'YY/MM/DD' to date field 'DD/MM/YY'?

On 13/08/07, Tom Lane [EMAIL PROTECTED] wrote:
 Paul Lambert [EMAIL PROTECTED] writes:
  novice wrote:
  db5=  \copy maintenance FROM test.txt

  I don't think copy allows you to leave columns out of your input file -
  even if they belong to a sequence.

 Well, it does, but you have to specify which ones are being provided,
 eg \copy tab(col1,col4,col7, ...

 But the long and the short of it is that COPY doesn't see any column
 delimiters at all in this file.  We're guessing as to what the OP
 intends the columns to be, but whatever he wants, he needs something
 other than an uncertain number of spaces to separate them ...

 regards, tom lane

 ---(end of broadcast)---
 TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match


---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [GENERAL] copy command - date

2007-08-13 Thread Scott Marlowe
On 8/12/07, novice [EMAIL PROTECTED] wrote:
 I resolved it by doing this - is there another more efficient method?
 And yes, the text file I am working with doesn't have any TABs

 5162   OK   SM 06/12/04 06:12

 substr(data, 30, 2)||'-'||substr(data, 27,
 2)||'-20'||substr(data, 24, 2)||substr(data, 32, 6) as
 inspection_date

I didn't have to do anything special, just copied it in:

create table g (ts timestamp);
set datestyle=ISO, MDY;
copy g (ts) from stdin;
06/12/04 12:00:00
\.
select * from g;
 ts
-
 2004-06-12 12:00:00
delete from g;
set datestyle=ISO, DMY;
copy g (ts) from stdin;
06/12/04 12:00:00
\.
 select * from g;
 ts
-
 2004-12-06 12:00:00

---(end of broadcast)---
TIP 6: explain analyze is your friend


[GENERAL] copy command - date

2007-08-12 Thread novice
What is the best method to load the following?
I'm having trouble loading the date field.  Should I convert it first
or should I be using a text processor before loading the data in?

3665   OK   SM 07/07/13 06:09
5162   OK   SM 07/02/12 06:10
3665   OK   SM 07/06/19 06:10

  Table pm.maintenance
 Column  |   Type   |
Modifiers
-+--+--
 maintenance_id  | integer  | not null default
nextval('maintenance_maintenance_id_seq'::regclass)
 meter_id| integer  |
 status  | character(11)|
 inspection_date | timestamp with time zone |
Indexes:
maintenance_pkey PRIMARY KEY, btree (maintenance_id)

Thanks!

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


Re: [GENERAL] copy command - date

2007-08-12 Thread Tom Lane
novice [EMAIL PROTECTED] writes:
 I'm having trouble loading the date field.  Should I convert it first
 or should I be using a text processor before loading the data in?

 3665   OK   SM 07/07/13 06:09
 5162   OK   SM 07/02/12 06:10
 3665   OK   SM 07/06/19 06:10

What sort of trouble, exactly?

I'm guessing that you might need to set DateStyle to tell Postgres what
the date field ordering is, but without seeing any error messages that's
strictly a guess.

regards, tom lane

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [GENERAL] copy command - date

2007-08-12 Thread novice
I'm using pg version 8.2.4.  What is the best method to load this data?
I have just a little over 55,000 entries.

db5=  \copy maintenance FROM test.txt
ERROR:  invalid input syntax for integer: 3665   OK   SM
07/07/13 06:09
CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
 SM 07/07/13 06:09

  Table pm.maintenance
 Column  |   Type   |
Modifiers
-+--+--
 maintenance_id  | integer  | not null default
nextval('maintenance_maintenance_id_seq'::regclass)
 meter_id| integer  |
 status  | character(3) |
 inspector   | character(2) |
 inspection_date | timestamp with time zone |



On 13/08/07, Tom Lane [EMAIL PROTECTED] wrote:
 novice [EMAIL PROTECTED] writes:
  I'm having trouble loading the date field.  Should I convert it first
  or should I be using a text processor before loading the data in?

  3665   OK   SM 07/07/13 06:09
  5162   OK   SM 07/02/12 06:10
  3665   OK   SM 07/06/19 06:10

 What sort of trouble, exactly?

 I'm guessing that you might need to set DateStyle to tell Postgres what
 the date field ordering is, but without seeing any error messages that's
 strictly a guess.

 regards, tom lane

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org/


Re: [GENERAL] copy command - date

2007-08-12 Thread Tom Lane
novice [EMAIL PROTECTED] writes:
 db5=  \copy maintenance FROM test.txt
 ERROR:  invalid input syntax for integer: 3665   OK   SM
 07/07/13 06:09
 CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
  SM 07/07/13 06:09

It looks to me like your problem is mostly that you don't have tabs
between the fields.  I don't think COPY can be taught to parse this
input directly --- you need to preprocess the file to split the fields
apart.

BTW: after you get it split into fields, you're also going to find that
OK is not valid input for the integer meter_id column.

regards, tom lane

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [GENERAL] copy command - date

2007-08-12 Thread Paul Lambert

novice wrote:

I'm using pg version 8.2.4.  What is the best method to load this data?
I have just a little over 55,000 entries.

db5=  \copy maintenance FROM test.txt
ERROR:  invalid input syntax for integer: 3665   OK   SM
07/07/13 06:09
CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
 SM 07/07/13 06:09



That's not complaining about the date, that is complaining that your 
input file does not contain the maintenance_id column.


--
Paul Lambert
Database Administrator
AutoLedgers

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match


Re: [GENERAL] copy command - date

2007-08-12 Thread Michael Glaesemann


On Aug 12, 2007, at 20:49 , novice wrote:

I'm using pg version 8.2.4.  What is the best method to load this  
data?

I have just a little over 55,000 entries.

db5=  \copy maintenance FROM test.txt
ERROR:  invalid input syntax for integer: 3665   OK   SM
07/07/13 06:09
CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
 SM 07/07/13 06:09


I'd say your tabs have been converted to spaces so the COPY command  
is not delimiting the fields as you expect.


Michael Glaesemann
grzm seespotcode net



---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match


Re: [GENERAL] copy command - date

2007-08-12 Thread Paul Lambert

Paul Lambert wrote:

novice wrote:

I'm using pg version 8.2.4.  What is the best method to load this data?
I have just a little over 55,000 entries.

db5=  \copy maintenance FROM test.txt
ERROR:  invalid input syntax for integer: 3665   OK   SM
07/07/13 06:09
CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
 SM 07/07/13 06:09



That's not complaining about the date, that is complaining that your 
input file does not contain the maintenance_id column.




I don't think copy allows you to leave columns out of your input file - 
even if they belong to a sequence.


You could try something like:

-- Create a temp table with everything but the sequence column.
CREATE TABLE maintenance_load AS
   SELECT meter_id,status,inspector,inspection_date
   FROM maintenance
   WHERE 1=0;

-- Copy data from file into temp table.
COPY maintenance_load FROM 'd:/temp/file.txt';

-- Insert data from temp table into main table, which will
-- generate the value for the sequence field.
INSERT INTO maintenance (meter_id,status,inspector,inspection_date)
   (SELECT * from maintenance_load);

-- Drop temp table.
DROP TABLE maintenance_load;

Also, not sure if it was your mail client or not, but the data you have 
supplied was space-separated, you probably want to make sure the actual 
data file is tab-separated, otherwise it's going to think it's all part 
of one field.



--
Paul Lambert
Database Administrator
AutoLedgers


---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq


Re: [GENERAL] copy command - date

2007-08-12 Thread novice
Thank you!  That was exactly what I was looking for =)

On 13/08/07, Paul Lambert [EMAIL PROTECTED] wrote:
 Paul Lambert wrote:
  novice wrote:
  I'm using pg version 8.2.4.  What is the best method to load this data?
  I have just a little over 55,000 entries.
 
  db5=  \copy maintenance FROM test.txt
  ERROR:  invalid input syntax for integer: 3665   OK   SM
  07/07/13 06:09
  CONTEXT:  COPY maintenance, line 1, column maintenance_id: 3665   OK
   SM 07/07/13 06:09
 
 
  That's not complaining about the date, that is complaining that your
  input file does not contain the maintenance_id column.
 

 I don't think copy allows you to leave columns out of your input file -
 even if they belong to a sequence.

 You could try something like:

 -- Create a temp table with everything but the sequence column.
 CREATE TABLE maintenance_load AS
 SELECT meter_id,status,inspector,inspection_date
 FROM maintenance
 WHERE 1=0;

 -- Copy data from file into temp table.
 COPY maintenance_load FROM 'd:/temp/file.txt';

 -- Insert data from temp table into main table, which will
 -- generate the value for the sequence field.
 INSERT INTO maintenance (meter_id,status,inspector,inspection_date)
 (SELECT * from maintenance_load);

 -- Drop temp table.
 DROP TABLE maintenance_load;

 Also, not sure if it was your mail client or not, but the data you have
 supplied was space-separated, you probably want to make sure the actual
 data file is tab-separated, otherwise it's going to think it's all part
 of one field.


 --
 Paul Lambert
 Database Administrator
 AutoLedgers


 ---(end of broadcast)---
 TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq


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


Re: [GENERAL] copy command - date

2007-08-12 Thread Tom Lane
Paul Lambert [EMAIL PROTECTED] writes:
 novice wrote:
 db5=  \copy maintenance FROM test.txt

 I don't think copy allows you to leave columns out of your input file - 
 even if they belong to a sequence.

Well, it does, but you have to specify which ones are being provided,
eg \copy tab(col1,col4,col7, ...

But the long and the short of it is that COPY doesn't see any column
delimiters at all in this file.  We're guessing as to what the OP
intends the columns to be, but whatever he wants, he needs something
other than an uncertain number of spaces to separate them ...

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [GENERAL] copy command - date

2007-08-12 Thread novice
Thanks again guys =)
I've managed to use temp table to load the data and create new table/s
Now, how do I convert a text field with 'YY/MM/DD' to date field 'DD/MM/YY'?

On 13/08/07, Tom Lane [EMAIL PROTECTED] wrote:
 Paul Lambert [EMAIL PROTECTED] writes:
  novice wrote:
  db5=  \copy maintenance FROM test.txt

  I don't think copy allows you to leave columns out of your input file -
  even if they belong to a sequence.

 Well, it does, but you have to specify which ones are being provided,
 eg \copy tab(col1,col4,col7, ...

 But the long and the short of it is that COPY doesn't see any column
 delimiters at all in this file.  We're guessing as to what the OP
 intends the columns to be, but whatever he wants, he needs something
 other than an uncertain number of spaces to separate them ...

 regards, tom lane

 ---(end of broadcast)---
 TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match


---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [GENERAL] copy command - date

2007-08-12 Thread novice
I resolved it by doing this - is there another more efficient method?
And yes, the text file I am working with doesn't have any TABs

5162   OK   SM 06/12/04 06:12

substr(data, 30, 2)||'-'||substr(data, 27,
2)||'-20'||substr(data, 24, 2)||substr(data, 32, 6) as
inspection_date

On 13/08/07, novice [EMAIL PROTECTED] wrote:
 Thanks again guys =)
 I've managed to use temp table to load the data and create new table/s
 Now, how do I convert a text field with 'YY/MM/DD' to date field 'DD/MM/YY'?

 On 13/08/07, Tom Lane [EMAIL PROTECTED] wrote:
  Paul Lambert [EMAIL PROTECTED] writes:
   novice wrote:
   db5=  \copy maintenance FROM test.txt
 
   I don't think copy allows you to leave columns out of your input file -
   even if they belong to a sequence.
 
  Well, it does, but you have to specify which ones are being provided,
  eg \copy tab(col1,col4,col7, ...
 
  But the long and the short of it is that COPY doesn't see any column
  delimiters at all in this file.  We're guessing as to what the OP
  intends the columns to be, but whatever he wants, he needs something
  other than an uncertain number of spaces to separate them ...
 
  regards, tom lane
 
  ---(end of broadcast)---
  TIP 9: In versions below 8.0, the planner will ignore your desire to
 choose an index scan if your joining column's datatypes do not
 match
 


---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [GENERAL] copy command - date

2007-08-12 Thread Tino Wildenhain

novice schrieb:

I resolved it by doing this - is there another more efficient method?
And yes, the text file I am working with doesn't have any TABs

5162   OK   SM 06/12/04 06:12

substr(data, 30, 2)||'-'||substr(data, 27,
2)||'-20'||substr(data, 24, 2)||substr(data, 32, 6) as
inspection_date


You could try to_date() - see:

http://www.postgresql.org/docs/8.2/static/functions-formatting.html

Regards
Tino

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq