PostgreSQLについて語って2万テーブルをめざしましょう。
関連アプリケーション特有の話題は、以下のスレッドへ。
pgsql-mlのヲチもここで。
前スレ
[PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989375812/
☆関連スレッド
[PHP + PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/983128806/
[PerlでPostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/999249463/
[MySQL vs PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989341364/
PostgreSQL 2テーブル目
1nobodyさん
03/03/11 02:34ID:9JR4latc52nobodyさん
03/03/23 02:15ID:T5828xOT >>51
バージョンはどうなってる?
バージョンはどうなってる?
03/03/23 03:47ID:???
7.2.3だと出ないなぁ。
56nobodyさん
03/03/24 15:05ID:Z0MnyWwn PL/PGSQL で Perl の join 関数みたいなストアドを作りたいんだけど、
なんかもっとスマートな方法無いでしょうか?
結果レコードのカラム名を変数で指定できると嬉しいんだけど、
Postgres 7.2.1 では変数展開してくれませんでした。
-- SQL の結果レコードに指定した文字列を挟んで連結して返す
-- 引数1: 実行する SQL 文
-- 引数2: 挟み込む文字列
DROP FUNCTION join_str(TEXT, TEXT);
CREATE FUNCTION join_str(TEXT, TEXT) RETURNS TEXT AS '
declare
delimiter alias for $1;
sql alias for $2;
str text;
rec record;
is_first bool;
begin
is_first = true;
str := '''';
FOR rec IN EXECUTE sql LOOP
IF is_first THEN
str := rec.serialnum; -- カラム名を指定
is_first := false;
ELSE
str := str || delimiter || rec.serialnum; -- カラム名を指定
END IF;
END LOOP;
return str;
end;
' LANGUAGE 'plpgsql';
なんかもっとスマートな方法無いでしょうか?
結果レコードのカラム名を変数で指定できると嬉しいんだけど、
Postgres 7.2.1 では変数展開してくれませんでした。
-- SQL の結果レコードに指定した文字列を挟んで連結して返す
-- 引数1: 実行する SQL 文
-- 引数2: 挟み込む文字列
DROP FUNCTION join_str(TEXT, TEXT);
CREATE FUNCTION join_str(TEXT, TEXT) RETURNS TEXT AS '
declare
delimiter alias for $1;
sql alias for $2;
str text;
rec record;
is_first bool;
begin
is_first = true;
str := '''';
FOR rec IN EXECUTE sql LOOP
IF is_first THEN
str := rec.serialnum; -- カラム名を指定
is_first := false;
ELSE
str := str || delimiter || rec.serialnum; -- カラム名を指定
END IF;
END LOOP;
return str;
end;
' LANGUAGE 'plpgsql';
57nobodyさん
03/03/25 10:48ID:??? >>56
集約関数つかってみた。でもデリミタ指定できなくなっちゃった。
create function join_str_sfunc(TEXT, TEXT) returns TEXT as '
select case
when $1 = '''' then $2
when $2 = '''' then $1
else $1 || '' '' || $2
end
' language 'sql';
create aggregate join_str (
basetype = text
, sfunc = join_str_sfunc
, stype = text
, initcond = ''
);
select join_str(field_name) from table_name;
集約関数つかってみた。でもデリミタ指定できなくなっちゃった。
create function join_str_sfunc(TEXT, TEXT) returns TEXT as '
select case
when $1 = '''' then $2
when $2 = '''' then $1
else $1 || '' '' || $2
end
' language 'sql';
create aggregate join_str (
basetype = text
, sfunc = join_str_sfunc
, stype = text
, initcond = ''
);
select join_str(field_name) from table_name;
58nobodyさん
03/03/25 17:13ID:??? >>57 replace関数。単細胞杉?
CREATE TABLE 好物 (名前 VARCHAR(10) NOT NULL, 番号 INT NOT NULL, 好物 VARCHAR(50) NOT NULL,
PRIMARY KEY (名前,番号));
insert into 好物(名前,番号,好物)values('おれ', 3, '皮');
insert into 好物(名前,番号,好物)values('おれ', 2, 'レバー');
insert into 好物(名前,番号,好物)values('おれ', 1, 'ビール');
insert into 好物(名前,番号,好物)values('他人', 3, '手羽先');
insert into 好物(名前,番号,好物)values('他人', 2, 'つくね');
insert into 好物(名前,番号,好物)values('他人', 1, '日本酒');
select 名前,replace(join_str(好物),' ','@') as 好物 from 好物 group by 名前;
名前| 好物
----+----------------------
おれ|ビール@レバー@皮
他人|日本酒@つくね@手羽先
ところで join_str の結合順序ってコントロールできるんですか?
CREATE TABLE 好物 (名前 VARCHAR(10) NOT NULL, 番号 INT NOT NULL, 好物 VARCHAR(50) NOT NULL,
PRIMARY KEY (名前,番号));
insert into 好物(名前,番号,好物)values('おれ', 3, '皮');
insert into 好物(名前,番号,好物)values('おれ', 2, 'レバー');
insert into 好物(名前,番号,好物)values('おれ', 1, 'ビール');
insert into 好物(名前,番号,好物)values('他人', 3, '手羽先');
insert into 好物(名前,番号,好物)values('他人', 2, 'つくね');
insert into 好物(名前,番号,好物)values('他人', 1, '日本酒');
select 名前,replace(join_str(好物),' ','@') as 好物 from 好物 group by 名前;
名前| 好物
----+----------------------
おれ|ビール@レバー@皮
他人|日本酒@つくね@手羽先
ところで join_str の結合順序ってコントロールできるんですか?
5957
03/03/25 17:46ID:??? 結合順序コントロールするにはサブクエリにするしかないかも。
select 名前
,replace(join_str(好物),' ','@') as 好物
from (select * from 好物 order by 好物) as k
group by 名前;
既に全然スマートじゃないという罠。
select 名前
,replace(join_str(好物),' ','@') as 好物
from (select * from 好物 order by 好物) as k
group by 名前;
既に全然スマートじゃないという罠。
60nobodyさん
03/03/25 22:02ID:??? >>59
すごいでつね。正規化したのはいいけれど、動的配列を繋げて一行で取り出すのって一苦労。
集約関数は奥が深い深い。勉強になります。
うちはまだ、好物1,好物2, ...., 好物25 をくっつけてますよ。
すごいでつね。正規化したのはいいけれど、動的配列を繋げて一行で取り出すのって一苦労。
集約関数は奥が深い深い。勉強になります。
うちはまだ、好物1,好物2, ...., 好物25 をくっつけてますよ。
6156
03/03/26 11:32ID:??? >>57-59
なるほどー。すごく勉強になりました。ありがとう。
ちなみに、7.2.1 では replace() が使えませんでした。
7.3.2 では使えました。
同じマシンに異なるバージョンの Postgres をインストールするのって、
簡単にできるんですねえ。
なるほどー。すごく勉強になりました。ありがとう。
ちなみに、7.2.1 では replace() が使えませんでした。
7.3.2 では使えました。
同じマシンに異なるバージョンの Postgres をインストールするのって、
簡単にできるんですねえ。
62nobodyさん
03/03/27 17:09ID:??? > 火災と申します
プロジェクトに「火がついた」か。
プロジェクトに「火がついた」か。
64nobodyさん
03/03/28 01:24ID:??? 7.2.2で日付計算をやっています。
test=# select CURRENT_DATE - '2001-12-01'::DATE > '2 month'::INTERVAL;
?column?
----------
f
(1 row)
となるのが・・・なんでだろ〜(´Д`;)
DATE型じゃなくてTIMESTAMP型にすると
ちゃんとtrueで帰ってくるのですが……
test=# select CURRENT_DATE - '2001-12-01'::DATE > '2 month'::INTERVAL;
?column?
----------
f
(1 row)
となるのが・・・なんでだろ〜(´Д`;)
DATE型じゃなくてTIMESTAMP型にすると
ちゃんとtrueで帰ってくるのですが……
65nobodyさん
03/03/28 01:38ID:???6664
03/03/28 13:45ID:??? >>65
integer型のようですね(´Д`;)
結局
# select CURRENT_DATE - '2 month'::INTERVAL >= '2001-12-01'::DATE;
?column?
----------
t
(1 row)
としたら動きました。うーむ謎〜。
#よくわかってないだけかも。
integer型のようですね(´Д`;)
結局
# select CURRENT_DATE - '2 month'::INTERVAL >= '2001-12-01'::DATE;
?column?
----------
t
(1 row)
としたら動きました。うーむ謎〜。
#よくわかってないだけかも。
67nobodyさん
03/03/28 17:21ID:??? データの作成って、みなさんはどんな方法を採ってます?
MicrosoftのAccess で入力フォームを作って、それをテキストにexport、
文字コード等を適当なものに変換、最後にcopy コマンドでpostgres に
持ってくる、という煩雑なことをしているのですが、もうちょっとなんとか
ならないのかな??と悩んでまして。。。
MicrosoftのAccess で入力フォームを作って、それをテキストにexport、
文字コード等を適当なものに変換、最後にcopy コマンドでpostgres に
持ってくる、という煩雑なことをしているのですが、もうちょっとなんとか
ならないのかな??と悩んでまして。。。
68nobodyさん
03/03/28 19:11ID:??? >>66
DATE型 - TIMESTAMP型 = INTERVAL型 で
DATE型 - DATE型 = INTEGER型 なんだよな。
仕様なのかバグなのかMLで聞いてみれば。
いc氏あたりが答えてくれるかも。
DATE型 - TIMESTAMP型 = INTERVAL型 で
DATE型 - DATE型 = INTEGER型 なんだよな。
仕様なのかバグなのかMLで聞いてみれば。
いc氏あたりが答えてくれるかも。
70nobodyさん
03/03/30 15:36ID:/7/BL2Cw [pgsql-jp: 29501] DELETEコマンドの使い方について。
釣り日和でつ。
,
,/ヽ
,/ ヽ
∧_∧ ,/ ヽ
( ´∀`),/ ヽ
( つつ@ ヽ
__ | | | ヽ
|――| (__)_) ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
釣り日和でつ。
,
,/ヽ
,/ ヽ
∧_∧ ,/ ヽ
( ´∀`),/ ヽ
( つつ@ ヽ
__ | | | ヽ
|――| (__)_) ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
71nobodyさん
03/03/30 15:50ID:dniM4gxK PostgreSQLをWindowsでcygwinを介さないで使うことはできませんか?
72nobodyさん
03/03/30 16:41ID:??? >>71
PowerGres (PostgreSQL on Windows)
〜オープンソースデータベースのスタンダード "PostgreSQL" を Windows で〜
http://osb.sra.co.jp/PowerGres/introduction.php
PowerGres (PostgreSQL on Windows)
〜オープンソースデータベースのスタンダード "PostgreSQL" を Windows で〜
http://osb.sra.co.jp/PowerGres/introduction.php
74nobodyさん
03/03/30 17:48ID:??? >>72
有償なのはいいとしても、ソース公開じゃないから、単なる
「Windowsで動作するPostgreSQL互換RDBMS」にしか
過ぎなくなっちゃったんだよね。
石井さんはPostgreSQLがオープンソースであるメリットを
熱く語っていたけど...。
有償なのはいいとしても、ソース公開じゃないから、単なる
「Windowsで動作するPostgreSQL互換RDBMS」にしか
過ぎなくなっちゃったんだよね。
石井さんはPostgreSQLがオープンソースであるメリットを
熱く語っていたけど...。
76nobodyさん
03/03/30 23:07ID:??? >>74
BSD ライセンスのオープンソースだからこそ、
こういった派生品でのビジネスもできる。
そして、オープンソースは、関わる人間の多さが成功の要。
たとえ派生品でも、ベースとなる製品についての知識を有する人が
一人でも増えるのは喜ばしいことだよ。
増えたうちの一人がほんの少しでも本家にコミットしてくれるなら、
最終的に本家の利益にもつながる。
>>75
メールの本文はほとんど読まずに、Subject しか読んでないから全然詳しくないんだけど、
本家の postgres-hackers ML では MS Windows 版の話とか出てるよね。
7.4 でネイティブサポートするとか書いてあったような。
BSD ライセンスのオープンソースだからこそ、
こういった派生品でのビジネスもできる。
そして、オープンソースは、関わる人間の多さが成功の要。
たとえ派生品でも、ベースとなる製品についての知識を有する人が
一人でも増えるのは喜ばしいことだよ。
増えたうちの一人がほんの少しでも本家にコミットしてくれるなら、
最終的に本家の利益にもつながる。
>>75
メールの本文はほとんど読まずに、Subject しか読んでないから全然詳しくないんだけど、
本家の postgres-hackers ML では MS Windows 版の話とか出てるよね。
7.4 でネイティブサポートするとか書いてあったような。
77nobodyさん
03/03/30 23:24ID:??? >>76
ttp://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
ttp://hp.vector.co.jp/authors/VA023283/PowerGres.html
本家はプロセスモデルでPowerGresはスレッドモデルってことでいいかな。
ttp://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
ttp://hp.vector.co.jp/authors/VA023283/PowerGres.html
本家はプロセスモデルでPowerGresはスレッドモデルってことでいいかな。
79nobodyさん
03/03/31 13:53ID:??? 現場は、フィードバックすると言っているがね。
ただ、(WindowsのスレッドモデルをUNIXに持ってくることに)
どの程度意味があるかは分からん。
S○Aも、UNIXでいくならUNIX一本でもっと機能拡張とかすればいいのに。
中途半端にUNIXもWindowsも手を染めてどうすんだか。
ただ、(WindowsのスレッドモデルをUNIXに持ってくることに)
どの程度意味があるかは分からん。
S○Aも、UNIXでいくならUNIX一本でもっと機能拡張とかすればいいのに。
中途半端にUNIXもWindowsも手を染めてどうすんだか。
80質問です。
03/04/01 17:16ID:0gCa7Sb2 ポスグレって
Windows版 ってないのですか?
Windows版 ってないのですか?
81nobodyさん
03/04/01 17:19ID:??? ,
,/ヽ
,/ ヽ
∧_∧ ,/ ヽ
( ´∀`),/ ヽ
( つつ@ ヽ
__ | | | ヽ
|――| (__)_) ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
,/ヽ
,/ ヽ
∧_∧ ,/ ヽ
( ´∀`),/ ヽ
( つつ@ ヽ
__ | | | ヽ
|――| (__)_) ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
82nobodyさん
03/04/02 01:19ID:??? [pgsql-jp: 29545] 削除依頼
祭りか徹底無視か?
祭りか徹底無視か?
83nobodyさん
03/04/02 01:37ID:??? あら、意外とすんなり収束したね。
85nobodyさん
03/04/04 06:06ID:PaLgsWqP PostgreSQL7.3.2のDB(文字コードはEUC_JP)に、psqlから
set client_encoding to 'SJIS'; を実行すると、
Conversion between SJIS and EUC_JP is not supported.
となってしまいます。
PostgreSQLのlib/にはそれらしき(?)、euc_jp_and_sjis.so があります。
一体何が原因なんでしょうか?
set client_encoding to 'SJIS'; を実行すると、
Conversion between SJIS and EUC_JP is not supported.
となってしまいます。
PostgreSQLのlib/にはそれらしき(?)、euc_jp_and_sjis.so があります。
一体何が原因なんでしょうか?
86nobodyさん
03/04/05 00:01ID:??? うーんなんでだろ。
select * from pg_convertion (だったかな)
とかはヨサゲ?
select * from pg_convertion (だったかな)
とかはヨサゲ?
87nobodyさん
03/04/05 05:05ID:??? insert や delete に Left join を使うとエラーがでるのですが、
ポスグレではselect文だけにしか使えないのでしょうか?
だとしたら2つのテーブルを比較して足りないモノだけを
1方のテーブルに追加していく、なんてことはできないのでしょうか?
やれるとしたらどんな手段があるか、参考になるサイトがあれば教えてください。
ポスグレではselect文だけにしか使えないのでしょうか?
だとしたら2つのテーブルを比較して足りないモノだけを
1方のテーブルに追加していく、なんてことはできないのでしょうか?
やれるとしたらどんな手段があるか、参考になるサイトがあれば教えてください。
88nobodyさん
03/04/06 17:10ID:iXfPNuQP 既存のディスクが一杯になってきたので、ディスクを追加して、
今後は「今までのディスク+追加したディスク」を使いたいのだが可能なの?
やっぱり、一つのデータベースが複数のディスクにまたがるのは無理なのかなぁ
今後は「今までのディスク+追加したディスク」を使いたいのだが可能なの?
やっぱり、一つのデータベースが複数のディスクにまたがるのは無理なのかなぁ
91nobodyさん
03/04/07 00:49ID:??? cygwinでPostgreSQL動かしてJavaのJDBC+ODBCでアクセス
してみたら、読み込みはうまくいったけど書き込みは
文字化けしてテーブルに書き込まれてしまった。
文字コード調べてみたらSJIS->EUC-JPのような変換が
行われ、そのEUC-JPのコードをSJISで見たときの文字化け
のままテーブルに書かれてしまった感じ。
解決策があったら教えてください。
してみたら、読み込みはうまくいったけど書き込みは
文字化けしてテーブルに書き込まれてしまった。
文字コード調べてみたらSJIS->EUC-JPのような変換が
行われ、そのEUC-JPのコードをSJISで見たときの文字化け
のままテーブルに書かれてしまった感じ。
解決策があったら教えてください。
9291
03/04/08 00:41ID:??? 自己解決。
jdbc:postgresql:test?charSet=SJIS
デコードの指定を付けたらすべてうまくいきました。
jdbc:postgresql:test?charSet=SJIS
デコードの指定を付けたらすべてうまくいきました。
93nobodyさん
03/04/09 03:20ID:Ub7v47GH ところで、PowerGres、どうよ?
PostgreSQLでできること、全部できる?
PostgreSQLでできること、全部できる?
94あぼーん
NGNGあぼーん
95nobodyさん
03/04/09 06:30ID:??? >93
誰も買ってない悪寒。だから言ったのに・・・。
誰も買ってない悪寒。だから言ったのに・・・。
96nobodyさん
03/04/09 19:01ID:xm6OICY+ >93
Ver7.4のWindowsネイティブ対応っぷり次第だな。
それまで待てれば待ったほうがいい。
Ver7.4のWindowsネイティブ対応っぷり次第だな。
それまで待てれば待ったほうがいい。
97nobodyさん
03/04/10 11:21ID:??? ひょっとしてPostgreSQLのパターンマッチングって同じ文字の連続(aaa、あああ など)って検出できない?
99nobodyさん
03/04/10 12:29ID:??? w)
100nobodyさん
03/04/10 15:51ID:???101nobodyさん
03/04/10 18:42ID:Gvrywi5t 特定のフィールドを指定してセレクトするのではなく、
逆に、「あるフィールド以外すべてセレクト」というふうなクエリーはかけないのでしょうか?
逆に、「あるフィールド以外すべてセレクト」というふうなクエリーはかけないのでしょうか?
103102
03/04/10 20:27ID:??? ん? 勘違いしてた。
107nobodyさん
03/04/11 01:46ID:nN51pMH3 >106
そっか!ありがと。試してみます。
そっか!ありがと。試してみます。
109nobodyさん
03/04/12 19:46ID:UOkuI+UD 気づくの遅すぎ(藁
113nobodyさん
03/04/16 13:29ID:sI0EuNRH つーか
SELECTしたい列名なんて明示的に書くのが王道だろ
それとも
テーブル設計をコロコロ変えやがるのかと小一時間...
SELECTしたい列名なんて明示的に書くのが王道だろ
それとも
テーブル設計をコロコロ変えやがるのかと小一時間...
114山崎渉
03/04/17 12:01ID:??? (^^)
11533
03/04/17 13:09ID:???11633
03/04/17 13:09ID:??? #/bin/sh
# PostgreSQL database backup script
# Dump to DATABASE_NAME_YYMMDD.pgdmp.
# Delete expired files.
# Output log.
# Setting
TARGET_DB='firstinfo tka' # List target database name.
DIR=/home/postgres
LOG=${DIR}/pgdump.log
BACKUPDIR=${DIR}/dbbackup
EXPIRE_DAY=90
# Main routine
echo "pg_dump start." `date` >> ${LOG}
date=`date +%Y%m%d`
for db_name in ${TARGET_DB}
do
DUMP_FILE_PATH=${BACKUPDIR}/${db_name}_${date}.pgdmp
/usr/local/pgsql/bin/pg_dump ${db_name} -b -o -Fc > ${DUMP_FILE_PATH} 2>>${LOG}
echo "Database ${db_name} backup complete." `date` >> ${LOG}
done
echo "pg_dump complete." `date` >> ${LOG}
echo "Delete obosolete pgdmp files start." `date` >> ${LOG}
find ${BACKUPDIR} -type f -daystart -mtime +${EXPIRE_DAY} |xargs /bin/rm -f
echo "Delete obosolete pgdmp files complete." `date` >> ${LOG}
# PostgreSQL database backup script
# Dump to DATABASE_NAME_YYMMDD.pgdmp.
# Delete expired files.
# Output log.
# Setting
TARGET_DB='firstinfo tka' # List target database name.
DIR=/home/postgres
LOG=${DIR}/pgdump.log
BACKUPDIR=${DIR}/dbbackup
EXPIRE_DAY=90
# Main routine
echo "pg_dump start." `date` >> ${LOG}
date=`date +%Y%m%d`
for db_name in ${TARGET_DB}
do
DUMP_FILE_PATH=${BACKUPDIR}/${db_name}_${date}.pgdmp
/usr/local/pgsql/bin/pg_dump ${db_name} -b -o -Fc > ${DUMP_FILE_PATH} 2>>${LOG}
echo "Database ${db_name} backup complete." `date` >> ${LOG}
done
echo "pg_dump complete." `date` >> ${LOG}
echo "Delete obosolete pgdmp files start." `date` >> ${LOG}
find ${BACKUPDIR} -type f -daystart -mtime +${EXPIRE_DAY} |xargs /bin/rm -f
echo "Delete obosolete pgdmp files complete." `date` >> ${LOG}
117山崎渉
03/04/20 06:27ID:??? ∧_∧
( ^^ )< ぬるぽ(^^)
( ^^ )< ぬるぽ(^^)
118nobodyさん
03/04/23 02:29ID:b3QZu4Pm PostgreSQL のデータベースを UTF8 で作ったとき、日本語の入ったカラムに
ORDER BY かけると JIS 漢字順ではなくなるのかな?
ORDER BY かけると JIS 漢字順ではなくなるのかな?
119nobodyさん
03/04/23 23:03ID:??? linさんのコメントにどんな意図があるかは知らないけど
サイトのJavaScriptでしばらく楽しんでしまった。。。
サイトのJavaScriptでしばらく楽しんでしまった。。。
120あぼーん
NGNGあぼーん
121nobodyさん
03/04/24 19:29ID:Q1w3nY2w 質問です。
複数のカラムを対象に、selectしたいのですが、どう書けばよろしいでしょうか?
mysqlだとFull Text Searchとあると思うのですが、Postgresでできますでしょうか?
複数のカラムを対象に、selectしたいのですが、どう書けばよろしいでしょうか?
mysqlだとFull Text Searchとあると思うのですが、Postgresでできますでしょうか?
122nobodyさん
03/04/25 11:28ID:???123nobodyさん
03/04/25 12:18ID:??? >>122
psqlで十分。
エディタもviでいい。
巡回ダウソもwgetでいい。
なんてなぁ、新しいのを覚えられないだけ。
CSE入れてみたけど起動してみて、
さ ぁ ど う し た も の か と 小 一 時 間 ...
psqlで十分。
エディタもviでいい。
巡回ダウソもwgetでいい。
なんてなぁ、新しいのを覚えられないだけ。
CSE入れてみたけど起動してみて、
さ ぁ ど う し た も の か と 小 一 時 間 ...
125nobodyさん
03/04/27 12:54ID:??? >>121
Full Text Searchって全文検索?
NamazとかKakasiでも使うかしかないんでないの?
全文検索な時点でDBが面倒見ないといけない機能でもないような気がする。
単純に複数カラムにを検索条件に掛けたいなら地道にSQL書きなはれ。
SELECT A.id
FROM A,B
WHERE A.id = B.id
AND A.firstname = "あああ"
AND B.adress = "あああ"
みたいな。
こんなSQL使う時点で、設計ミスか余計な機能な気もするけど。
Full Text Searchって全文検索?
NamazとかKakasiでも使うかしかないんでないの?
全文検索な時点でDBが面倒見ないといけない機能でもないような気がする。
単純に複数カラムにを検索条件に掛けたいなら地道にSQL書きなはれ。
SELECT A.id
FROM A,B
WHERE A.id = B.id
AND A.firstname = "あああ"
AND B.adress = "あああ"
みたいな。
こんなSQL使う時点で、設計ミスか余計な機能な気もするけど。
126nobodyさん
03/04/27 21:48ID:RGglVdIs psqlからのcopyコマンドで"\N"という文字列がテーブルに入れれない・・・(WITH NULL AS指定はなしで )
"\b"、"\n"、"\."は
"\\b"、"\\n"、"\\."に変換すれば入るのに・・・
"\N"は"\\N"に変換してもだめ・・・
"\N"という文字列はだめなんでしょうか?
"\b"、"\n"、"\."は
"\\b"、"\\n"、"\\."に変換すれば入るのに・・・
"\N"は"\\N"に変換してもだめ・・・
"\N"という文字列はだめなんでしょうか?
127nobodyさん
03/04/27 21:51ID:ClMbC1OP >>121
第一正規化、って知っていますか?
第一正規化、って知っていますか?
128121
03/04/27 21:52ID:u/4ug4s4 >> 124
失礼しました。whereで複数カラムを指定するという意味です。
>> 125
全文検索というと、確かにNamazuとかそういう方向いっちゃいますね。
単純に複数カラムを検索条件にかけたいだけです。
where andでつなぐと遅くなるので、(レコード数が230万件あるので)
mysqlのFull Text Searchつかったらと先方にいわれ、いまさら乗り換える
のはややこしいので、Postgresでもそういう機能がないかと探しておりま
した。
設計ミスか余計な機能ではとありますが、検索対象の列が5つあって、
最初はそれぞれにかければいいという仕様でしたが、5つのどれかに
ヒットするようにしなさいと仕様が変更されたのです。
他に方法あるでしょうか? って自分で考えろという感じですが、
いろいろと調べてはいるのですが、思いつきません。。
失礼しました。whereで複数カラムを指定するという意味です。
>> 125
全文検索というと、確かにNamazuとかそういう方向いっちゃいますね。
単純に複数カラムを検索条件にかけたいだけです。
where andでつなぐと遅くなるので、(レコード数が230万件あるので)
mysqlのFull Text Searchつかったらと先方にいわれ、いまさら乗り換える
のはややこしいので、Postgresでもそういう機能がないかと探しておりま
した。
設計ミスか余計な機能ではとありますが、検索対象の列が5つあって、
最初はそれぞれにかければいいという仕様でしたが、5つのどれかに
ヒットするようにしなさいと仕様が変更されたのです。
他に方法あるでしょうか? って自分で考えろという感じですが、
いろいろと調べてはいるのですが、思いつきません。。
130121
03/04/27 22:41ID:u/4ug4s4 > 129
すいません、where andではなく、where or で、遅くなるという意味です。
すいません、where andではなく、where or で、遅くなるという意味です。
131nobodyさん
03/04/27 23:03ID:??? >>128
>設計ミスか余計な機能ではとありますが、検索対象の列が5つあって、
>最初はそれぞれにかければいいという仕様でしたが、5つのどれかに
>ヒットするようにしなさいと仕様が変更されたのです。
そんなの、仕様変更されるのが当たり前だな。
仕様変更に対応できるようにしてなかった設計ミス。
ところで、230万件×5の全文検索ってMySQLなら速くできるのかな?
>設計ミスか余計な機能ではとありますが、検索対象の列が5つあって、
>最初はそれぞれにかければいいという仕様でしたが、5つのどれかに
>ヒットするようにしなさいと仕様が変更されたのです。
そんなの、仕様変更されるのが当たり前だな。
仕様変更に対応できるようにしてなかった設計ミス。
ところで、230万件×5の全文検索ってMySQLなら速くできるのかな?
135132
03/04/28 02:16ID:??? >>134
あー、likeで%から始まる奴は駄目だね。
ホントに全文検索っぽくやってるとしたら、like '%語句%'ってやってる
可能性は高いか。
121にもうちょっと情報を出してホスィところだなぁ。
あー、likeで%から始まる奴は駄目だね。
ホントに全文検索っぽくやってるとしたら、like '%語句%'ってやってる
可能性は高いか。
121にもうちょっと情報を出してホスィところだなぁ。
136nobodyさん
03/04/28 11:27ID:??? where coalesce(列1,'') || coalesce(列2,'') || coalesce(列3,'') like '%検索ワード%'explain してみたら、costは同じだけどrowsは or より少ないよ
137121
03/04/28 13:42ID:carn+S7w >> 134,135
ご指摘の通り、like '%語句%'とやっております。
実は今からでもテーブルの設計は変更可能なのですが、
どのように変更したらよろしいでしょうか。
今はID,NAME,AA,BB,CC,DD,EEというカラム構成で、
AA,BB,CC,DD,EEの中で、どれかに検索キーワードがあればヒットする
というようにしたいです。
>> 136
こちらありがとうございます。
coalesceってこういう時に使うのですね。習ってはいたのですが、
いつ使うんだろと思っていました。勉強になります。
ご指摘の通り、like '%語句%'とやっております。
実は今からでもテーブルの設計は変更可能なのですが、
どのように変更したらよろしいでしょうか。
今はID,NAME,AA,BB,CC,DD,EEというカラム構成で、
AA,BB,CC,DD,EEの中で、どれかに検索キーワードがあればヒットする
というようにしたいです。
>> 136
こちらありがとうございます。
coalesceってこういう時に使うのですね。習ってはいたのですが、
いつ使うんだろと思っていました。勉強になります。
139nobodyさん
03/04/29 11:45ID:??? textの部分一致は、例えば「abcdefg」という文字列があったとして、
like '%cd%' とすると遅くなるから、
abcdefg
bcdefg
cdefg
defg
efg
fg
g
というテーブルを別に作って、like 'cd%' すると速くなるよ、と
言われたことがある。もちろん、インデックス作って。
実際自分でやってみたことはないが。
like '%cd%' とすると遅くなるから、
abcdefg
bcdefg
cdefg
defg
efg
fg
g
というテーブルを別に作って、like 'cd%' すると速くなるよ、と
言われたことがある。もちろん、インデックス作って。
実際自分でやってみたことはないが。
140121
03/04/29 18:01ID:JKdqeuMi >> 127
正規化については、こちらを読みました。
http://www.rfs.jp/sitebuilder/sql/01/06.html
今回のケースとは特に関係ないかと思うのですが、私の洞察力不足でしょうか。
>> 139
ありがとうございます。
そこまでやると複雑になるので、おとなしくMySQLに移行するかと思って
しまいます。。
正規化については、こちらを読みました。
http://www.rfs.jp/sitebuilder/sql/01/06.html
今回のケースとは特に関係ないかと思うのですが、私の洞察力不足でしょうか。
>> 139
ありがとうございます。
そこまでやると複雑になるので、おとなしくMySQLに移行するかと思って
しまいます。。
141nobodyさん
03/04/29 19:13ID:8zWvKIjl142あぼーん
NGNGあぼーん
143しろ
03/04/30 09:50ID:??? >140
> 正規化については、こちらを読みました。
> http://www.rfs.jp/sitebuilder/sql/01/06.html
> 今回のケースとは特に関係ないかと思うのですが、私の洞察力不足でしょうか。
今回のケースと関係あるかないかどうかは「ID,NAME,AA,BB,CC,DD,EE」では判りません。
NAME,AA,BB,CC・・・が、名前、住所、電話番号、メールアドレス・・・などだったら
この部分に関しての正規化の必要はないかもしれません。
しかし、NAME,AA,BB,CC・・・が、担当者、商品名A、商品名B、商品名C・・・などだったら
必要ありますね。
とうわけで、あなたの洞察力不足かどうかは、構造がわからないので
なんともいえないです。
> 正規化については、こちらを読みました。
> http://www.rfs.jp/sitebuilder/sql/01/06.html
> 今回のケースとは特に関係ないかと思うのですが、私の洞察力不足でしょうか。
今回のケースと関係あるかないかどうかは「ID,NAME,AA,BB,CC,DD,EE」では判りません。
NAME,AA,BB,CC・・・が、名前、住所、電話番号、メールアドレス・・・などだったら
この部分に関しての正規化の必要はないかもしれません。
しかし、NAME,AA,BB,CC・・・が、担当者、商品名A、商品名B、商品名C・・・などだったら
必要ありますね。
とうわけで、あなたの洞察力不足かどうかは、構造がわからないので
なんともいえないです。
144nobodyさん
03/04/30 14:44ID:??? 正規化汁!と言ったひとの早とちりでしょう。
145121
03/04/30 22:31ID:0656yZRu >> 143
NAME,AA,BB,CC・・・は、担当者、商品名A、商品名B、商品名C・・・という
構造です。特にカラムが一緒ではないので、正規化は関係ないかと思うのですが、、、
ちがいます?
NAME,AA,BB,CC・・・は、担当者、商品名A、商品名B、商品名C・・・という
構造です。特にカラムが一緒ではないので、正規化は関係ないかと思うのですが、、、
ちがいます?
147146
03/04/30 23:01ID:??? (担当者テーブル:tantou)
id,name,address,tel…
(担当者id,担当者名,住所,電話番号…)
(商品テーブル:item)
id,name,price,registrant_id,regist_date…
(商品id,商品名,価格,登録者id,登録日時…)
SELECT tantou.name, tantou.address, item.regist_date
FROM tantou, item
WHERE tantou.id = item.registrant_id
AND tantou.name = "AAA"
AND item.name like "%BBB%"
みたいな感じにはなんないでしょうか?
NAME,AA,BB,CC・・・は、担当者、商品名A、商品名B、商品名C
というカラムにならないといけない状況があまり想像つきませぬ。。
id,name,address,tel…
(担当者id,担当者名,住所,電話番号…)
(商品テーブル:item)
id,name,price,registrant_id,regist_date…
(商品id,商品名,価格,登録者id,登録日時…)
SELECT tantou.name, tantou.address, item.regist_date
FROM tantou, item
WHERE tantou.id = item.registrant_id
AND tantou.name = "AAA"
AND item.name like "%BBB%"
みたいな感じにはなんないでしょうか?
NAME,AA,BB,CC・・・は、担当者、商品名A、商品名B、商品名C
というカラムにならないといけない状況があまり想像つきませぬ。。
148146
03/04/30 23:06ID:??? 最近の5件だったらこうか…。
(憶測しすぎだったらスマソ)
SELECT tantou.name, tantou.address, item.regist_date
FROM tantou, item
WHERE tantou.id = item.registrant_id
AND tantou.name = "AAA"
AND item.name like "%BBB%"
ORDER BY item.regist_date
LIMIT 5
(憶測しすぎだったらスマソ)
SELECT tantou.name, tantou.address, item.regist_date
FROM tantou, item
WHERE tantou.id = item.registrant_id
AND tantou.name = "AAA"
AND item.name like "%BBB%"
ORDER BY item.regist_date
LIMIT 5
149nobodyさん
03/05/01 20:08ID:??? PostgreSQLってテーブル名とかフィールド名が大文字英数だと、
SQL書くときテーブル名, フィールド名をダブルクォーテーションで
くくらないといけないんだな。
なんでこんな仕様になってんだ?
SQL書くときテーブル名, フィールド名をダブルクォーテーションで
くくらないといけないんだな。
なんでこんな仕様になってんだ?
151nobodyさん
03/05/02 20:04ID:??? 2つのテーブルの両方のカラム(同じなまえ)にデータが存在するかどうかを
確認するために以下のようにしているのですが、うまくいきません。
どこか間違っているのでしょうか?
SELECT 1 FROM TBL1, TBL2 WHERE TBL1.ID!='hoge' AND TBL2.ID!='hoge';
SELECT 1 FROM TBL1, TBL2 WHERE TBL1.ID='hoge' OR TBL2.ID='hoge';
確認するために以下のようにしているのですが、うまくいきません。
どこか間違っているのでしょうか?
SELECT 1 FROM TBL1, TBL2 WHERE TBL1.ID!='hoge' AND TBL2.ID!='hoge';
SELECT 1 FROM TBL1, TBL2 WHERE TBL1.ID='hoge' OR TBL2.ID='hoge';
レスを投稿する
ニュース
- イチロー氏、野球と比べてサッカーが「うらやましい」と語る 「チームのためにという感じが」「野球は個人で成績を出さないとボロカス」 [冬月記者★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★5 [尺アジ★]
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★6 [ひぃぃ★]
- 【サッカー】W杯の「日本VSブラジル」を他で例えると…Xで問いかけ話題「湘北vs山王」「明徳義塾vs大阪桐蔭」「ドトウvsオペラオー」★2 [o(^・-・^)o★]
- 【サッカー】日本代表、ブラジル戦でアウェーユニホーム着用へ… FIFAが公式発表 爆売れの白デザイン、W杯で初お披露目! [冬月記者★]
- この問題解けたらIQ135以上
- 石破がアメリカに投資した80兆円って返ってくるの? [126644339]
- 経団連「年内には訪中して習主席と面会したい😢レアアースもタングステンももう限界😢」 ★2 [904151406]
- 天気予報が全然当たってなくてムカつくんだが
- 【高市悲報】今国会の全法案が廃案へ。。。飲みィのヤリィのしてきた結果がこれなのか・・・ [252835186]
- お台場、次々閉館してただの廃墟と化してしまう [709039863]