PostgreSQL
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/09(水) 11:36ID:GHX.oCXo関連アプリケーション特有の話題は、以下のスレッドへ。
☆関連スレッド
[PHP + PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=983128806
[PHP以外+PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=988929199
[MySQL vs PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=989341364
0639627
02/10/01 21:23ID:???てことはやっぱCLASSPATHがおかしかったのか。。。
CLASSPATHは入念にチェックしてたのにな。
0640608
02/10/02 01:19ID:9gZ3jv4a>>617&>>618のとおり出巣。このとおりに打ってこのエラーが出る出巣。もちろん、
SELECT DISTINCT TEL FROM users_pre WHERE TEL Like '03%'
でエラーが出ないことは確認してある出巣(T_T)
0641hmk
02/10/02 01:42ID:???SELECT COUNT(*) FROM users_pre u WHERE tel like '03%' AND NOT EXISTS(SELECT * FROM users_pre WHERE tel=u.tel AND oid<>u.oid);
こういうのもたぶん駄目なんだろうな。。。
上手い問い合わせはないもんでしょうか。
0642hmk
02/10/02 03:46ID:???SELECT ... FROM (SELECT ...); のように、
FROM句にSELECTが来る問い合わせをインラインビューと呼び、
これはすべてのRDBMSで実装されてはいないらしい。
ちゅーことは、>>641のような相関副問い合わせなら通りそうなんだけど。。。
儂はPostgres持ってないんで試せまそん。誰かやってよ。
0643nobodyさん
02/10/02 05:35ID:TiRO3wLQ0644nobodyさん
02/10/02 18:05ID:???”年月日”だけをひっかけて件数を取得したいのですが
何か手はありますでしょうか?
LIKEでやってみたのですがひっかかりません。
0646644
02/10/02 18:27ID:???select * from テーブル名 where date(timestamp型)= '2002-10-02';
上記でできました(泣)
ありがとうございます。
0647nobodyさん
02/10/05 12:51ID:2T2tvBuJ通貨型のmoneyを使ってみたのですが、
サンプルデータとして'123456789'と入れると
($5,392,229.88)
に化けました…。
なぜなんでしょう。
どうやって入力すればいいのですか?
教えてください。
0648nobodyさん
02/10/06 11:14ID:???桁あふれ。
http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/1997Nov/msg00092.html
0649nobodyさん
02/10/06 20:35ID:YiJCOGQBSELECT SUM(カラム) as total FROM テーブル;
みたいなことできないでしょうか?
0651649
02/10/07 23:51ID:AXMG8FcF0652nobodyさん
02/10/08 11:18ID:???SELECT COUNT(*) FROM meinDaten;
count
-------
0
(1 row)
アツカウベキデータガナイノデイミガナイ、鬱だ氏脳。
0653名無しさん@Emacs
02/10/08 13:59ID:???> mein
ちゅースペルが気になる。
0654nobodyさん
02/10/08 14:38ID:???その後のデータも含めて見てみれ。
meinDaten
つまり、mainDataのドイチュ語版だろ。
Ich bin mein daten !
0657nobodyさん
02/10/09 07:55ID:???0658nobodyさん
02/10/09 10:49ID:???int型のフィールドに対して
''をインサートを実行すると自動で0が入ってしまうのですけど
''のままインサートできないものでしょうか?
0659nobodyさん
02/10/09 10:50ID:oibqlApD0661652&655
02/10/09 13:56ID:???You can't insert NULL STRING into int-type field.
It's でーべーの基本やね.
As >>660 said, using NULL value instead is recommended.
0663nobodyさん
02/10/10 02:39ID:dij3CJ32こんな中途半パンパなネタでもないスレタイトルが
でてきてしまうほどここは低下してしまったのか。
なんて。思ったり。
CGI VS PHP!
ワラェネェ。
0664nobodyさん
02/10/10 02:39ID:dij3CJ320665anonymous
02/10/15 15:35ID:6HlJOXo9#postmaster -D /usr/local/pgsql/data
とすると、下記のエラーが出ます
できるだけ、OSのパラメータはいじらずにこれを回避させたい
のですが、どうすればいいでしょうか?
IpcMemoryCreate: shmget(key=5432001, size=1441792, 03600) failed: Invalid argume
nt
This error usually means that PostgreSQL's request for a shared memory
segment exceeded your kernel's SHMMAX parameter. You can either
reduce the request size or reconfigure the kernel with larger SHMMAX.
To reduce the request size (currently 1441792 bytes), reduce
PostgreSQL's shared_buffers parameter (currently 64) and/or
its max_connections parameter (currently 32).
If the request size is already small, it's possible that it is less than
your kernel's SHMMIN parameter, in which case raising the request size or
reconfiguring SHMMIN is called for.
The PostgreSQL Administrator's Guide contains more information about
shared memory configuration.
0666nobodyさん
02/10/15 19:04ID:0ZpQ3Voy解決方法、メッセージに出ているよね?
reduce PostgreSQL's shared_buffers parameter (currently 64) and/or its max_connections parameter (currently 32).
0667login:Penguin
02/10/15 19:38ID:???I'll change parameter of buffer.
thank you.
0668anonymous
02/10/16 08:44ID:o+8CpqDw具体的にどのファイルのパラメータを変更すればいいのでしょうか?
0669nobodyさん
02/10/16 12:40ID:???0670super
02/10/16 15:19ID:o+8CpqDwというコマンドをスクリプトを作って実行したいのですが
上を書いたファイルを作成して$chmod +x start
$./start
してもchange directory されません。
どうすればいいでしょうか?
0671nobodyさん
02/10/16 15:24ID:???0672super
02/10/16 15:49ID:o+8CpqDwcd /usr/local/pgsql/data
という内容の start というファイルを作成しましたが
$./start
しても実行されません。
0673nobodyさん
02/10/16 16:47ID:???0674AAA
02/10/16 18:46ID:ZpB3Pmml何も表示されません。
うまく動作したと思って
PWD してみるとディレクトリは
かわっていません
SOLARIS 2.6 ON SPARC です
0675nobodyさん
02/10/17 00:12ID:???0676nobodyさん
02/10/17 03:10ID:ychsNVf3こんな環境でjoinしまくりでselectを発行すると当然遅い・・・。
なので、カーネルをいじってソートメモリ増やしたりするが、
shm,semあたりがいまいちわからず・・・・。
Postgres用にメモリを最大限割り当てて、高速化を図りたいです。
shm,semあたりをご教授ください。なんとか高速化したい!!!
環境:
FreeBSD4.5
Postgres7.1.2
0677nobodyさん
02/10/17 10:07ID:???ある任意のテーブルの何行目を削除 みたいなことはできるのでしょうか?
(何行目というのを数字で与えるようにしたい)
0678nobodyさん
02/10/17 10:12ID:???postgresユーザのみrwxのはずなんだが。
ユーザー権限とかそんなんでないの? cd できないってのは。
0679super
02/10/17 12:54ID:eVO0i+anでlsすると
$ ls -al
合計 54
drwx------ 6 postgres other 512 10月 16日 15:51 .
drwxr-xr-x 9 root other 512 10月 15日 15:12 ..
-rw------- 1 postgres staff 4 10月 15日 15:13 PG_VERSION
-rw------- 1 root other 3848 10月 16日 12:30 backupposgtresql.conf
drwx------ 4 postgres staff 512 10月 15日 15:13 base
drwx------ 2 postgres staff 512 10月 15日 15:13 global
drwx------ 2 postgres staff 512 10月 15日 15:13 pg_clog
-rw------- 1 postgres staff 10006 10月 15日 15:13 pg_hba.conf
-rw------- 1 postgres staff 1250 10月 15日 15:13 pg_ident.conf
drwx------ 2 postgres staff 512 10月 15日 15:13 pg_xlog
-rw------- 1 postgres staff 3848 10月 16日 15:06 postgresql.conf
$
0680nobodyさん
02/10/17 16:51ID:???0682nobodyさん
02/10/18 10:15ID:???その「start」ってスクリプトはpostgresユーザー権限で実行してる?
もしそうなら、スクリプトの中身見せてみそ。
0683nobodyさん
02/10/18 11:12ID:kP3mYN+N復元したいのですが、セル内改行?の部分でエラーメッセージが
出たり出なかったりします。
psql:/tmp/hoge.dat:1111: invalid command \015
psql:/tmp/hoge.dat:1112: ERROR: parser: parse error at or near "fuga"
と「\015\012」がある行の次の行でエラーがでます。
pg_dumpのオプションは-c -d -x
「\015\012」があるすべての部分でエラーがでるわけでは
ないのです。
回避方法をご存知の方がいらっしゃいましたら、ご教授願います。
0684nobodyさん
02/10/22 22:50ID:JaiAlXbKウィンドウズにインストールしたいのですが、
参考になるページありましたら教えてください。
0685nobodyさん
02/10/22 22:55ID:???この辺、どうよ?
http://www.mattsuan.jp/~intrasv/pstgresql_a_inst.html
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
とりあえず、手持ちのURLから。
0686nobodyさん
02/10/22 22:58ID:JaiAlXbKありがとうございます。
調べてはみたのですが調べろといわれるかと思いました。
みてみます。
0688nobodyさん
02/10/22 23:08ID:JaiAlXbKすいません。いまさっき興味をもったばかりなのでほとんど分かりません。
とりあえずリナックスにしようかと思いました。
0690Disca ◆4ENAfP6znE
02/10/23 10:34ID:beWxZTYkテーブルのすべての rows の数を取得したいのですが、
どうすれば良いのでしょうか
0692nobodyさん
02/10/25 18:22ID:jq5EHClSどうすればいいのでしょう?
また、同じくランダムにn個の行を取得するにはどうすればいいのでしょう?
0693nobodyさん
02/10/25 20:21ID:???0694692
02/10/25 22:20ID:???ども。
調べました。
SELECT * FROM foo ORDER BY RAND() LIMIT n OFFSET m;
(ランダムにm番目から、n件を取得。(OFFSET は0からはじまる))
ですね。どもども。
0695nobodyさん
02/10/26 11:59ID:Rc/ro/Gqいい方法はありませんでしょうか?
検索した結果を一時テーブルにして、それをorder byすればいいかと思ったけど、
うまくいきませんでした。
0696sage
02/10/26 12:03ID:???0699教えてくん
02/10/27 22:04ID:???ERROR: Attribute 'hogehoge' is of type 'timestamp' but expression is of type 'int4' You will need to rewrite or cast the expression
と怒られますた!
なんでですのん?
0700699
02/10/27 22:09ID:???0701699
02/10/27 22:13ID:???テーブル仕様変更したのに、sql走らせてなかった。
勘違いですた。
0702nobodyさん
02/10/28 20:00ID:EWIjH/IC社内からtelnet経由で直接アクセスしてきたクライアントのIPアドレスや時間帯を
記録したのですが良い方法はありませんか。(できれば、どのDBやテーブルに対してアクセスをしてきたかも知りたい)
postgres.conf(だったか?)に、log_connections falseという
項目があって、それをtrueにしたのですが、どこにもログが記録されている気配は
ありませんでした。。。何かやり方が悪いのでしょうか?
0703nobodyさん
02/10/28 20:10ID:???LedHatって聞いたことねぇな(w
IPなんかすぐ抜けるだろ?
それをDBに格納すりゃいいだけじゃねーか。
ポスグレ単体であれこれやろうとしてんのか?モシカシティ
0704702
02/10/28 20:31ID:???えーと、かなりどうでもいい細かい突っ込み感謝です(w
(RedHatLinux7.2ですだ)
>>ポスグレ単体であれこれやろうとしてんのか?モシカシティ
あれこれやるつもりはないですが、DBにアクセスしてきたログは、
DB側でとりたかったので。。いけませんかね?
ちなみに、初心者君ですいませんが、
>>IPなんかすぐ抜けるだろ?
のやりかたを教えてください(や、ほんとにすいません、わからんのです。ネタじゃなくて。
0705便乗君
02/10/28 20:41ID:???0706nobodyさん
02/10/28 20:56ID:???シーラカンス本持っていないなら買いましょう。
禿しく時間の節約になるYO!
ただ、>>702 の望みをかなえるのはちょっと難
しいかも。どのクライアントも、結局ローカル
から接続することになるから。telnet のログと
postgres のログを突き合わせるか、telnet を
やめて、直に postgres へ接続させるか…
0707nobodyさん
02/10/28 23:32ID:Uf/igqC30708nobodyさん
02/10/29 00:06ID:???0709nobodyさん
02/10/29 16:36ID:???ストアドプロシージャで動的にSQL文を生成できますか?
0710nobodyさん
02/10/29 16:47ID:XTgUUCFaできます。7.2からかな?
0711nobodyさん
02/10/30 17:36ID:eV7jEixT例えば、testというテーブルがあり、その中身は
no int,
data text
という二つのカラムがあり、no は数値型、dataはテキスト型です。
noカラムの値が「1」のレコードが3つより少ないなら
insert into test value(1,'hoge');
のSQL文を実行したいのです。
「3つより少ないなら」という文と上記SQL文を
一文で書く良い方法はないでしょうか?
別の言い方をすると、noカラムには同じ値のモノが3つまでしか
入れることができないようにしたいのです。
noの値によって「5つより少ないなら」等と変えたいので、
できればSQL文で制御したいのですが、可能でしょうか?
そもそもinsert文にwhere文や副問合せ等が使えるのかも
イマイチわからないのですが。
やはり複数のSQL文にしないとダメですか?
0712hmk
02/10/30 21:45ID:WX2r8AfdPL/pgSQLっていうんだっけ。それを使えばできるかも。
儂はOracleのPL/SQLなら使ったことあるが、PL/SQLならば無名ブロックを使って、
DECLARE
num number;
BEGIN
SELECT COUNT(*) INTO num FROM the_table WHERE no=1;
IF num<3 THEN
INSERT INTO test VALUES(1,'hoge');
END IF;
END;
こんなんでできたはず(昔のことなんで文法とかあやしいかも知れんが)。
PL/pgSQLでも同様にできるんでないの?間違ってたら須磨祖。
「一文で」というよりは、「一度の呼び出し」でという感じだが。
0713nobodyさん
02/10/31 02:50ID:???Cygwin上で動かす方法があると思いますが、
その環境で実際運用しているケースってあるんでしょうか?
0715nobodyさん
02/10/31 21:26ID:???遅レスだが、誰も答えてないみたいなので。
シェルスクリプトのプロセスの生成、実行、破棄の過程をよく考えれば理由は自ずと分かると思うが、
alias start='cd /usr/local/pgsql/data'
でお望みの結果が得られると思う。
詳しくは、シェルスクリプト関連のスレへ。
0716AAA
02/10/31 21:54ID:qzNXYl3VPostgresql の解説書でシーラカンス本って、Oreilly から
出ているやつですか?
0717nobodyさん
02/11/01 02:26ID:yeaPQaRo[postgres pgsql]$ ps aux | grep post
postgres 2000 0.0 0.4 5056 840 ? SN Oct31 0:02 [postmaster]
postgres 2661 0.0 0.0 4916 0 ? SWN Oct31 0:00 [postmaster]
postgres 3479 0.0 1.1 5072 2308 ? SN Oct31 0:00
/usr/bin/postgres
postgres 3482 0.0 1.1 5072 2308 ? SN Oct31 0:00
/usr/bin/postgres
root 13094 0.0 0.5 2120 1056 pts/0 S 02:00 0:00 login --
postgres
postgres 13095 0.0 0.4 1692 924 pts/0 S 02:00 0:00 -bash
postgres 13624 0.0 0.3 2324 688 pts/0 R 02:07 0:00 ps aux
postgres 13625 0.0 0.4 1692 924 pts/0 R 02:07 0:00 -bash
0718ois\\\
02/11/01 08:22ID:ECdYK2+dThank you
postgres
のuser directory /home/postgres/
のどれかのファイルに書くのですね
0719質問age
02/11/01 11:02ID:W+9xVgU/何なのでしょうか?
削除してもオッケー?
-rw------- 1 postgres postgres 16777216 10月 31 12:52
0000000000000000
0720nobodyさん
02/11/01 16:48ID:???アクセス権限はありますか? それともそのデータベースに
アクセスできるユーザなら、誰でも任意の操作ができるので
しょうか?
>>719 消しちゃダメみたい。
http://www.postgresql.jp/document/pg721doc/admin/wal-implementation.html
http://www.postgresql.jp/document/pg721doc/admin/wal-configuration.html
別に増えていくわけじゃないよね。シンボリックリンクを使えば、
別の場所へ持って行くことも可能らしいです。
0722これのことだと思われ
02/11/02 13:52ID:???技評でつ
0723nobodyさん
02/11/02 16:47ID:???pg_xlog以下は、トランザクションログ(Write Ahead Log)です。
更新を行うときにDBのページファイルを直接いじるのはコストがかかるので、
一旦WALにシーケンシャルに書き出し、
ページファイルへの反映は非同期に行います。
WALファイルは不要になれば(=WALの中身がページファイルへ反映されれば)、
自動的に削除されます。
なので勝手に消すのは(・A・)イクナイ!!
シンボリックリンクで他に流す場合には、ファイル単位でなく
pg_xlog ディレクトリそのものをどっかに飛ばしてください。
07247.2.3
02/11/02 22:52ID:ucdsOWFjPostgreSQLでは複数のプロセスが動いています。
postgresはいわゆるサーバデーモンみたいなもの。
postmasterはクライアントごとにpostgresからクライアントごとに
fork()されて、実質の処理を行う。
以上
0725nobodyさん
02/11/04 02:58ID:zPFPSFhP一番詳しく解説されているのはどれですか?
因みに自分が使っているPostgresのバージョンは7.2.3です。
0726nobodyさん
02/11/04 04:58ID:???マニュアル。
0727nobodyさん
02/11/04 12:21ID:???最近オライリーから日本語版が出た Postgres 本を
ちょっと立ち読みしたけど、結構 PL/pgSQL の解説
が詳しかったような気がする。
http://www.oreilly.co.jp/
あの表紙は、マンモスなのかな? PHP の本と混同し
そうなヨカン。
0728
02/11/04 22:39ID:B1KD5qMHこれって空ファイルをUPしてもダメですよね?
DBあぼーん?
0729nobodyさん
02/11/04 23:25ID:EX+F+q+xご存知でしたら教えてください。cygwin用パッケージも
ダウソしたんですけど、通常書いてあるような、手順踏んで
も立ち上がらないんですわ。
0731pg_log
02/11/05 11:25ID:e5LPgkr8タイムスリップとは?
バックアップから復旧したってことですか?
0732nobodyさん
02/11/06 03:26ID:???pg_logはトランザクションの状態を保持しているログファイルですんで、
消しちゃうと、以前のトランザクションの状態を忘れちまいます。
きちんとシャットダウンとかできてれば問題ないんですけど、
障害後とかにpg_log消しちゃうとcommitされてたはずのトランザクションが
DBに反映されてなかったりするかもしれません。
通常は、postmaster止めるときには全トランザクションが終了している
はずなので、あまり問題はないのですが。
運用中に消しちまったなら、それはそれでマズいですね。
特にトランザクション中なら。
0733pg_pconnect
02/11/07 14:59ID:???「pg_pconnect では、スクリプトが終了してもデータベースの接続を張りつづけます(pg_close が呼ばれれば切断してします)」とありますが、
PHPマニュアルの「pg_pconnect」には、
「pg_close() は、 pg_pconnect()によりオープンされた持続的接続は 閉じません。」と明記されてます。
記事が間違っているわけですよね??
0734733
02/11/08 10:47ID:eJxPn4HTPHPの話題ですた。
0735AAAA
02/11/08 14:06ID:P3hOvOBMなぜTelnetでアクセス??時代遅れもいいところ
ssh でアクセスしましょう。 REdhat にssh が
入ってなければ、CD-2 にはいってますので、インストールして下さい
Windows からRed Hat へのssh でのアクセスは
ssh でグーグル検索すると、解決できます。
0736nobodyさん
02/11/08 20:06ID:???http://www15.xdsl.ne.jp/~vfr/debian/magazinedb/postgresql-setup.html
例えば、field01〜field03のフィールドを持つテーブル"Sample"があったとします。
フィールドのどれかが”猿”という文字を含んでいるレコードを検索するには
select * from Sample where
field01 ~ '猿' or
field02 ~ '猿' or
field03 ~ '猿'
;
とすればよいかと思いますが、
これだとフィールドが増えたとき比例してsql文も長くなってしまいます。
何か上手く省略する方法はないものでしょうか?
whereの対象となるフィールドを"全て"と指定する方法が
あれば便利だと思うのですが・・・
0738nobodyさん
02/11/12 19:42ID:???不定カラムを指定する方法は知らんけど・・・
where field01 || field02 || file03 ~ '猿'
カラム数に比例して長くなることには変わりないが多少は短くなる。
つーのではダメ?
■ このスレッドは過去ログ倉庫に格納されています