Обсуждение: Update entire column with new date values

Поиск
Список
Период
Сортировка

Update entire column with new date values

От
"Weiss, Kevin"
Дата:
Hi all,

I have a simple table which contains information about our safety files:

CREATE TABLE docs
(
  filename varchar(256) NOT NULL,
  filepath varchar(256) NOT NULL,
  version varchar(8),
  date timestamp NOT NULL,
  docid int8 NOT NULL DEFAULT nextval('docs_docid_seq'::regclass),
  category varchar(16), NOT NULL
  CONSTRAINT pkey_docs PRIMARY KEY (docid, filename, date),
  CONSTRAINT ukey_docid UNIQUE (docid)
)

I need to update the date for each file (the "date" & "filename"
columns). However, the updated values for date are not the same for each
file (due to when the files were last modified). I can import the new
date values from a text file containing the date and filename.

What sort of "UPDATE" command do I use in this case? Essentially, I'm
trying to do something like:

UPDATE docs SET date = '{$input_date}'
    FROM ('C:/Temp/docupdate.txt')
    WHERE filename = '{$input_filename}';

Any help is appreciated. Thanks!


Kevin Weiss
kevin.weiss@selkirkinc.com

Re: Update entire column with new date values

От
Richard Huxton
Дата:
Weiss, Kevin wrote:
> I need to update the date for each file (the "date" & "filename"
> columns). However, the updated values for date are not the same for each
> file (due to when the files were last modified). I can import the new
> date values from a text file containing the date and filename.
>
> What sort of "UPDATE" command do I use in this case? Essentially, I'm
> trying to do something like:
>
> UPDATE docs SET date = '{$input_date}'
>     FROM ('C:/Temp/docupdate.txt')
>     WHERE filename = '{$input_filename}';

You'll want to gather your updates into a table and then use the
non-standard FROM clause to do pretty much what you're trying to here.

http://www.postgresql.org/docs/8.1/static/sql-update.html

UPDATE docs SET date = ???
FROM newvals
WHERE docs.filename=newvals.filename

Failing that look at a subselect in your SET clause.

--
   Richard Huxton
   Archonet Ltd

Re: Update entire column with new date values

От
"A. Kretschmer"
Дата:
am  27.07.2006, um 10:17:48 -0500 mailte Weiss, Kevin folgendes:
> I need to update the date for each file (the "date" & "filename"
> columns). However, the updated values for date are not the same for each
> file (due to when the files were last modified). I can import the new
> date values from a text file containing the date and filename.
>
> What sort of "UPDATE" command do I use in this case? Essentially, I'm
> trying to do something like:
>
> UPDATE docs SET date = '{$input_date}'
>     FROM ('C:/Temp/docupdate.txt')
>     WHERE filename = '{$input_filename}';
>
> Any help is appreciated. Thanks!

Create a new table with filename and date - column and fill this table
with your text file. Then you have 2 tables and can run normal SQL to
update your table.


HTH, Andreas
--
Andreas Kretschmer    (Kontakt: siehe Header)
Heynitz:  035242/47215,      D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
 ===    Schollglas Unternehmensgruppe    ===