pgwordcount.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
- /*
- * wordcount.c
- *
- */
- #include <stdio.h>
- #include "halt.h"
- #include <libpq-fe.h>
- #include "pginterface.h"
- int
- main(int argc, char **argv)
- {
- char query[4000];
- int row = 0;
- int count;
- char line[4000];
- if (argc != 2)
- halt("Usage: %s databasen", argv[0]);
- connectdb(argv[1], NULL, NULL, NULL, NULL);
- on_error_continue();
- doquery("DROP TABLE words");
- on_error_stop();
- doquery("
- CREATE TABLE words(
- matches int4,
- word text )
- ");
- doquery("
- CREATE INDEX i_words_1 ON words USING btree (
- word text_ops )
- ");
- while (1)
- {
- if (scanf("%s", line) != 1)
- break;
- doquery("BEGIN WORK");
- sprintf(query, "
- DECLARE c_words BINARY CURSOR FOR
- SELECT count(*)
- FROM words
- WHERE word = '%s'", line);
- doquery(query);
- doquery("FETCH ALL IN c_words");
- while (fetch(&count) == END_OF_TUPLES)
- count = 0;
- doquery("CLOSE c_words");
- doquery("COMMIT WORK");
- if (count == 0)
- sprintf(query, "
- INSERT INTO words
- VALUES (1, '%s')", line);
- else
- sprintf(query, "
- UPDATE words
- SET matches = matches + 1
- WHERE word = '%s'", line);
- doquery(query);
- row++;
- }
- disconnectdb();
- return 0;
- }