PostgreSQL

全1193件中261~280件表示
  • PostgresのPITR

    ちょっとタイトルとはズレているかもしれませんが、 Postgresのデータを冗長化する上での質問です。 サーバが2台あり、1台を本番機とし、もう1台を待機用とします。 本番機にarchive_commandで待機用のサーバのディレクトリを設定します。 【質問1】 ログファイルが貯まっていくと思いますが、 こちらはログが16MBになるまで掃き出されないのでしょうか? その場合、本番機が消滅した場合、16MB分のログがなくなる可能性があるという事でしょうか? 【質問2】 前提:本番機のログファイルを自作シェルで待機用のサーバへコピーします。この間隔を1分にします。 上記の場合、最悪1分以内のデータまで冗長化されると思います。 1分以内にログが16MB以上貯まるようなシステムでなければ、archive_commandによる冗長化は 必要ないのではないでしょうか? 必要性があれば、教えてください。 Postgresのバージョンは8.3.x でお願いいたします。

  • мySQLからРostgresへの移行方法

    SтRUтSでмySQLを使っているのですがоracleに買収された関係でРostgresに 移行することになりました。мySQLには1つのユーザで接続しTableのみObjectを 作成。特別なことといえば、日本語を使用することと、Transactionを使っているという ことです。DBのサイズは10MB以下です。 一般的にProgramの修正は不要で簡単に移行できますでしょうか? 以前Аccessからоracleに移行したときは ・Data型の互換性が無い ・VBAでOracleのNullとАccessのNullの扱いが異なる(Programの修正が必要) という理由で結構大変でした。

  • XML型に対する問い合わせ

    以下のような(1)と(2)のxml型を値を持つレコードがある場合にbの中でcとdが両方1の場合だけ検索((1)のレコードだけが欲しい)するようにはどのように問い合わせればば良いでしょうか? (1) <a>    <b><c>1</c><d>1</d></b>   </a> (2) <a>    <b><c>1</c><d>0</d></b>    <b><c>0</c><d>1</d></b>   </a> 自分で考えた問い合わせだと(1)と(2)の両方のレコードが返ってきてしまいます。 select * from test where   '1'=ANY(xpath('/a/b/c/text()',xml)::text[])   AND '1'=ANY(xpath('/a/b/d/text()',xml)::text[])

  • 同じ表を複数回結合する場合

    例えば、名前、出身県、現住所 のような表があります。 出身県と現住所は県名マスターを参照したいのですが、 select (名前、 県名マスター.県名 as 出身県、 県名マスター.県名 as 現住所 from 人名表 p left join 県名マスター k on p.出身県 = k.コード) left join 県名マスター on p.現住所 = k.コード; としたのですが、出身県も現住所も同じになってしまいます。 どのような結合が良いのでしょうか?  

  • postgresql.confが編集できない

    質問させてください。 PostgreSQL + pgAdminをインストールしました。 postgresql.confを編集しようとしましたが、「他のプロセスが使用中」というエラーが出て編集できません。 PostgreSQLのサービスは停止させています。 環境はWindows7です。 どなたか対策をご存じないでしょうか。 よろしくお願いします。

  • データベースに接続できない

    postgresql-7.2.3.tar.gzインストール時には、下記内容でデータベースに接続できていました。 <?php $con = pg_connect("dbname='database_6' user='postgres' password='xxx'") if(!$con){ print "DB connection failed!!\n"; }else{ print "DB connection successful!!\n"; } ?> ところが、postgresql-8.0.26.tar.gzをインストールしたら、上記内容でデータベースに接続できなくなり、 Fatal error: Call to undefined function: pg_connect() in /usr/local/apache/htdocs/sql.php on line 2 というエラーメッセージが表示されます。 phpinfo();で確認もしましたが、ない感じです。Additiional Modulesのどこかを見れば、いいのでしょうか? pgsql.soは/usr/local/lib/php/extentions/pgsql.soにあります。/usr/local/lib/php.iniのextention_dir = ./を以下のように修正し、 extention_dir = /usr/local/lib/php/extentions extention=pgsql.so /usr/local/apache/bin/apachectl restart も実行しています。

  • initdbの文字コードと違う文字コードでDB作成

    postgres9.0.4でEUCでinitした環境があります。 initdb --encoding=EUC_JP そこにUTF8のDBを作成したいのですが、以下のようなエラーがでます。 psql -U postgres postgres=# CREATE DATABASE dbname postgres-# WITH ENCODING='UTF8' postgres-# OWNER=dbowner postgres-# CONNECTION LIMIT=-1; ERROR: encoding UTF8 does not match locale ja_JP.eucJP DETAIL: The chosen LC_CTYPE setting requires encoding EUC_JP. 既に運用が始まっているEUCのDBが稼動している状態です。 EUCで初期化したところに後からUTF8のDBを作成する方法はないのでしょうか?

  • 重複データを省いて集計する方法について

    お世話になります。 現在、重複データを省いて集計する方法を考えているのですが、実現できておりません。 実現できるSQLをご存知の方、いらっしゃいましたら情報を頂けますでしょうか。 # 私の使用しているのは、PostgreSQL8.3となります。 実現したい内容は、以下となります。  ・テーブルAからID単位で人数を集計。 ※但しファイル名が同じ場合は、1つとして集計する。   group by句でID,ファイルをグループ化してみたのですが、うまくいきません。    【テーブルA】    ID  ファイル  人数    0001 aaa.txt  3    0001 aaa.txt  3    0001 aaa.txt  3    0001 bbb.txt  3    0001 bbb.txt  3    0001 bbb.txt  3    0000 ccc.txt  3    0000 ccc.txt  3    0000 ccc.txt  3 欲しい結果は、以下となります。     ID  集計    0000 3    0001 6 お手数お掛け致しますが、ご教示のほどよろしくお願い致します。

  • csvデータをインポートできない

    書籍にLinux(RedHat8.0)、PostgreSQLのユーザ名とデータベース名とを同一にするように記載されていました。このため、"database_6"というもの作成しました。ところが、テーブル作成、テーブル確認には、データベース接続後、所定のコマンドを実行することで問題はありませんでしたが、インポート時には、 ERROR: could not open file "/home/database_6/database_euc_4.csv" for reading: 許可がありませえん とエラーメッセージが表示されます。そこで、アクセス権限を調べると、 -r-xr-xr-x 1 database_6 database_6 113166 6月 5 19:37 database_euc_4.csv これは、Linuxの"database_6"であって、PostgreSQLの"database_6"ではないと考えられます。どのようにすれば、アクセス権限を変更できるでしょうか?ここでは、同一名称にしたことが、仇になっているようです。こうならないようにするために、同一名称にするのかと思っていましたが…。 ちなみに、database_6のOwnerは"postgres"になっています。"postgres"にアクセス権限を与えるのも1つの方法かと思いますが、インポートを実行しようとすると、 -bash: COPY: command not found とエラーメッセージが表示され、パスが通っていないようです。これは、~/.bash_profileが上手く読み込まれていないということでしょうか?

  • ファイルを用いて一括でテーブルを作成できない

    csvデータをインポートするためにデータベース"database_6"を作成し、"create.sql"というファイルをユーザ"database_6"のホームディレクトリ"database_6"に配置した後、"database_6"でログインして、下記コマンドを実行し、テーブル"music"を作成しようとしたところ、 $ psql -e -f create.sql bash: psql: command not found というエラーメッセージが表示されます。なお、PostgreSQLは自動起動設定されています。"database_6"のOwnerは"postgres"で、下記の書籍に記載された方法(別の方法は何も記載されていない)でデータベース"database_6"を作成しました。 $ createdb database_6 で作成しまいた。そこで、同じく下記の書籍に記載された方法(別の方法は何も記載されていない)でユーザ"database_6"を作成しました。 $ createuser -d -A database_6 なお、ユーザ"postgres"を用いた場合には、 FATAL: database "postgres" does not exist というエラーメッセージが表示されます。

  • phpPgAdminの使い方について

    どなたか教えてください。 phpPgAdminで特権ユーザ(root)で権限を制限したユーザを作成しました。 以下権限内容です。 (スーパーユーザー権限 :No  データベースを作成権限:No  ロールを作成権限:No  特権を引き継ぎ権限:No) 特権ユーザ(root)がデータベースを作成しテーブルを作成します。 所有者はさきほど作成したユーザを指定しました。 権限を制限したユーザでログインし作成したデータベースに接続。 データベースの項目で特権項目が見えてしまいます。 この特権項目を非表示かクリックすることができないようにするにはどのように すればいいでしょうか? 環境 CentOS 5.4 postgreSQL 8.1系 php 5.1.6 apache2.2.3 phpPgAdmin 5.0.2 お分かりの方がいらっしゃいましたら、 回答よろしくお願いします。

  • Encoding変更

    RedHat8.0であるため、postgresql-7.2.3.tar.gzをインストール(初期化を含む)していましたが、検証をしているうちに、下記コマンドを実行できないこと COPY tablename FROM '/var/test/testdata.csv' WITH CSV; また、encodingにUTF8を指定できことが分かりました。そこで、postgresql-7.2.3.tar.gzをアンインストールし、postgresql-8.0.26.tar.gzをインストール(初期化を含む)しましたが、Encodingを確認したところ、EUC_JPのままになっていました。アンインストールが上手くできなかったためと考えられますが、どのようにすれば、UTF8に変更できるでしょうか?

  • csvデータをPostgreSQLにインポート

    RedHat8.0にpostgresql-7.2.3.tar.gzをインストールしています。database_6に接続し、 database_6=# COPY tablename FROM '/var/test/testdata.csv' WITH CSV; を実行すると(tablenameとtestdataとは同一名にしてあります)、 ERROR: parser: parse error at or near "csv" と表示されてしまいます。どこが悪いのでしょうか?

  • PostgreSQLはインストールされている?

    $ /usr/local/pgsql/bin/postmaster -D PGDATA を実行すると、 database system is ready と表示されますが、 # rpm -qa|grep postgres を実行すると、何も表示されません。PostgreSQL7.2.3はインストールされているといえるのでしょうか?

  • initdbのオプション

    PostgreSQL7.2.3インストール後、 $ /usr/local/pgsql/bin/initdb を実行したところ、 You must identify where the data for this database system will reside. Do this with either a -D invocation option or a PGDATA environment variable. と表示されます。これは、.bashrcで追加した下記内容が読み込まれていないからでしょうか? POSTGRES_HOME=/usr/local/pgsql export PATH="$PATH":/usr/local/pgsql/bin export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export MANPATH="$MANPATH":$POSTGRES_HOME/man 上記オプションはどちらを選べばよいでしょうか?また、PGDATAの場合、"-"なしでそのままPGDATAでしょうか?

  • PostgreSQLを初期化できない

    RedHat8.0にPostgreSQL7.2.3をインストールしましたが、下記コマンドで初期化できません。 $ initdb -bash: initdb: command not found なお、PostgreSQL7.2.1をインストールしていましたが、その際は初期化できていました。ただし、テキストエディタでpostgresql.conf、pg_hba.confを編集するため、開こうとしましたが、開けませんでした(ファイルが表示されない)。ファイルを検索すると、/usr/local/pgsql/data/にあることになっていましたが…。アクセス権限の問題と考え、postgresでログインしようとしましたが、パスワードの初期設定が分かりませんでした。今回、Windows上で作成したPHPプログラムの動作を検証するため、テスト環境を構築しようとしています。インストールしたApache1.3.27、PHP4.2.2に合わせて、バージョンを更新しました。アンインストールし、インストール前に $ make check で All 79 tests passed. であることも確認しています。

  • トリガープロシージャのNEW変数について

    トリガを実行したときに、処理部分のfunctionで更新されたデータの値を取得したいと考えております。 NEW変数を使い、 NEW.[フィールド名]とすれば取得できるのは知っているのですが、 この[フィールド名]にfunction内で取得した項目名を指定するにはどうしたら良いのでしょうか? 仮に取得したいフィールド名が「sample_id」だった場合、 functionの中でNEW.sample_idとすれば取得できます。 が、今回考えていたのは以下のような処理の場合です。 記述イメージなので間違っているかもしれませんが、、、 begin for rec in SELECT att.attname         FROM pg_attribute as att         INNER JOIN pg_class as class ON class.oid = att.attrelid         WHERE att.attnum > 0         AND class.relname='テーブル名'         ORDER BY att.attnum  loop  insert into 'テーブル名2' values(NEW.rec.attname); loop end end; ループでテーブル内の項目を取得し、取得した項目の値をテーブル名に入れるという処理です。 rec.attnameには「sample_id」と入っていたので、NEW.rec.sample_idとしたのですが、 実行したときにエラーになり、どうしてもinsertできません。 どうにかして、sample_idの値をinsertしたいのですがわかりません。 ご教授お願い致します。

  • Cコンパイル時にポスグレのライブラリが見つからない

    LinuxでC言語にてコンパイルをする際に(makefileを使用)にポスグレのライブラリが見つからないという下記エラーが出力されます。 しかしポスグレのライブラリはmakefileにて指定した箇所(-Lオプションにて/opt/prov/pgsql/libを指定)に存在しています。 makefileに誤りがなく、シンボリックリンクも正確に貼られていると考えると他にどのような原因が考えられるのでしょうか?(環境変数の設定等でしょうか??) エラー ------------- /usr/bin/ld: skipping incompatible /opt/prov/pgsql/lib/libpq.so when searching for -lpq /usr/bin/ld: skipping incompatible /opt/prov/pgsql/lib/libpq.a when searching for -lpq /usr/bin/ld: cannot find -lpq ボスグレのライブラリは存在している ---------- -rw-r--r-- 1 postgres postgres 126994 X月 XX 16:XX /opt/prov/pgsql/lib/libpq.a lrwxrwxrwx 1 postgres postgres 12 X月 XX 16:XX /opt/prov/pgsql/lib/libpq.so -> libpq.so.2.2 lrwxrwxrwx 1 postgres postgres 12 X月 XX 16:XX /opt/prov/pgsql/lib/libpq.so.2 -> libpq.so.2.2 -rwxr-xr-x 1 postgres postgres 90659 X月 XX 16:XX /opt/prov/pgsql/lib/libpq.so.2.2

  • csvデータをPostgreSQLにコピー

    # rpm -qa | grep postgresql を実行してみると、 postgresql-python-7.2.2-1 postgresql-odbc-7.2.2-1 postgresql-7.2.2-1 postgresql-perl-7.2.2-1 postgresql-server-7.2.2-1 postgresql-devel-7.2.2-1 postgresql-contrib-7.2.2-1 postgresql-libs-7.2.2-1 postgresql-jdbc-7.2.2-1 postgresql-tcl-7.2.2-1 が表示されたため、 # postgres start を実行すると、 "root" execution of the PostgreSQL server is not permitted. The server must be started under an unprivileged user id to prevent more information on how to properly start the server. と表示されます。そこで、本サイトのQ&Aを参考にして、 # /etc/init.d/postgresql start を実行したところ、起動しました。Windows版では、pgAdminIIIのクエリーツールで以下のようにすれば、csvデータ(UTF8)をPostgreSQLの所定のテーブルにインポートできます。 COPY tablename FROM E'C:\\test\\testdata.csv' WITH CSV; Linux版ではどのようにするのでしょうか?

  • PostgreSGLをインストールできない

    YumでRed Hat 8.0(メモリ256MB、32ビット)にpgdg-redhat-8.0-5.noarch.rpmを下記手順に従ってインストールしようとしましたが、インストールできません。 1.共有メモリの設定確認(shmmaz:33554432、shmall:2097152) 2.Yumリポジトリの設定(http://yum.pgrpms.org/howtoyum.phpに記載された内容と実際の設定ファイルとに相異がありました) 3.installコマンドを指定して実行 3.でcommand not foundと表示されるため、# yum search postgresqlを実行しましたが、command not foundと表示されます。そこで、 # rpm -qa | grep postgresql を実行してみると、 postgresql-python-7.2.2-1 postgresql-odbc-7.2.2-1 postgresql-7.2.2-1 postgresql-perl-7.2.2-1 postgresql-server-7.2.2-1 postgresql-devel-7.2.2-1 postgresql-contrib-7.2.2-1 postgresql-libs-7.2.2-1 postgresql-jdbc-7.2.2-1 postgresql-tcl-7.2.2-1 が表示されます。このため、# yum -y install 'postgresql*'も試してみましたが、command not foundと表示されてしまいます。これは、64ビット版と32ビット版との違いによるものでしょうか?手元にある試料には、ソースコードからのインストール方法も64ビット版のものです。