• ベストアンサー

PostgreSQLでテーブル構成を変える

既にデータが多く入っている状態のPostgreSQLのデータベースに、新たにフィールドを追加する場合 または、削除したい場合 新たに作り直す以外に方法はありますでしょうか?? どなたかご教授お願いいたします

  • sonoj
  • お礼率91% (11/12)

質問者が選んだベストアンサー

  • ベストアンサー
noname#271
noname#271
回答No.2

kotaeriさんにに付け加えて回答します 基本的にDBのテーブル構成を変更する場合は ALTER コマンドを使用します。 しかしこれには制限があり ・データの構造の変更はできない  int -> char など変更はできない ・データの領域を小さくはできない  char[20] -> char[15] など変更はできない  #この逆はできます。 そのほかにもあると思いますが 基本的にデータ操作を必要とする変更はできないです。 もしどうしてもやりたい場合は テーブルの再作成が必要です!! #私なんぞは、開発中は結構頻繁に発生するので #テストデータなどをCSV形式で作成しておき #登録するプログラムなどを作成して利してます。

sonoj
質問者

お礼

回答ありがとうございます。 何かで使うことを見越して、大きめにレコードを作っておく(ダミーのフィールドを作っておく)って手もありますよね・・・? 参考になりました。ありがとうございます!

その他の回答 (1)

  • kotaeri
  • ベストアンサー率0% (0/4)
回答No.1

PostgreSQLは詳しくないですけどALTER文を使えばよろしいんじゃないでしょうか? インデックスがある場合などの削除で制限とかあるかもしれないのでALTERをキーワードにしてマニュアルで調べてくださいな。

sonoj
質問者

お礼

なるほど・・ALTERですね・・・ 専門書で、CREATE や DROP の説明があるあたりに、意外にこのあたりの説明がなかったので・・・ ではALTERで調べてみます。ありがとうございます。

関連するQ&A

  • postgreSQLのODBCはどこに・・・

    postgreSQLやaccessが初心者な私ですが、 既存のデータベース(postgreSQL)をaccess2003でデータベース内を検索させたいと思っています。 accessとposgreSQLを繋げるにはODBCが必要ということでWindowsXP側には入れたのですが、postgreSQL側にODBCが入っていないようでaccess2003と通信することが出来ません。 前からあるデータベースなのでインストールを行った人がpostgreSQLインストール時にODBCをインストールしないようにしたのかもしれません そこで質問なのですが、ODBCが入っていない状態でpostgreSQLにODBCだけを入れることは可能なのでしょうか?できたらその方法や方法が書かれているページを教えて頂けますでしょうか?お願いします。

  • PostgreSQLを完全に削除出来ない

    以前試しにPostgreSQLをインストールしたことがあって、一度削除していました。そして今回新しく構築したく再インストールしたのですが、pgAdminIIIを開くと、以前作成状態とまったく同じになってます。 削除方法に問題があるのでしょうか?以下に作業内容を記述します。 1.プログラムの追加と削除でPostgreSQLを削除 2.管理ツールのユーザーよりPostgreSQL service accountの削除 3.Documents and Settingsにpostgres関連のディレクトリが作成されていたので削除 4.PostgreSQLをインストール 5.以前の状態で復活・・・ ■環境 OS:WindowsXPpro DB:PostgreSQL 8.0.3 / pgAdminIII 1.3.0 インストール方法は以下ページと同じ http://allabout.co.jp/internet/database/closeup/CU20050122A/index.htm 以上よろしくお願いします。

  • PostgreSQL 7.2.8 異なるデータベース間のテーブル

    こんにちは。かなり困っています、よろしくお願いします>< PostgreSQL 7.2.8 を使用しています。 一つのユーザーで、二つのデータベースがあります。 それぞれ同じカラムを持つ同じ名前のテーブルがあります。 中のデータは違います。 db1 - tableT db2 - tableT 条件を付けて、db1のtableTのデータを db2のtableTへコピーするにはどのような方法がありますか? 例えば select * from db1.tableT tbl1, db2.tableT tbl2 where tbl1.title = tbl2.title; のようにしてとりあえずselectで試してみましたがダメでした。 やはりスキーマとデータベースは違うんですね>< ドットが認識されませんでした。 どなたか解決法をご存知の方、よろしくお願いします。

  • PostgreSQLの再インストールにて・・・

    一度インストールしたPostgreSQLのパスワードを忘れてしまいまして、アンインストールをして再インストールしたところ、下記のようなエラーが出てしまいまして、悩んでいます。 --------------------------- データディレクトリ・エラー --------------------------- 指定されたデータ・ディレクトリーは、存在します。 あなたが同じ主要なバージョン番号をもつ現存するデータベースを持っていれば, データベース・クラスターを初期化する必要がありません。 もし異なる主要なバージョンをもつ現存するデータベースを持っていれば、古いデータベースをバックアップして、新しいものを作り出す必要があります。 ---------------------------- どうしたら指定されたデータ・ディレクトリーを削除することができるでしょうか? 助けて下さい。

  • WindowsNT上でPostgreSQLを動かす

    こんにちわ。 WindowsNT上でApacheを使ってPHPとPostgreSQLを動かそうとしています。PostgreSQLはCygwinを使って動いてます。 やりたいことはPostgreSQLでデータベースを作成し、それをPHPを使ってデータベースの検索ページを構築したいのですが、その他のPHPページちゃんとブラウザー上で見れるのですが、PostgreSQLを含んだページは何も表示されないのです。PHPかApacheで設定するところがあるのでしょうか??それともPostgreSQLのどこかで?? どなたかWindowsでPostgreSQLを使っている方ご教授願います!!

  • PostgreSQLで使えるツール

    PostgreSQLで使えるツール データセンターにPostgreSQLの入ったサーバを置いており、リモートでデータベースの管理や CSVでのデータの挿入や編集等を行いたいのですが、何かよいツールはないでしょうか。 CSEが使えるかと思って試したのですが、データセンターの設定で、ODBC接続ができません。 何卒、よろしくお願いします。

  • AK-HPでPostgreSQL

    データベースにPostgreSQLを使用したいと思っているのですが、データベースの作成・接続の方法がわからずに困っています。 IDとパスワードがまだ発行されていないので、会員専用ページにもログインできない状態です。

  • CSE PostgreSQLのテーブルにプライマリキーを作成する方法

    現在、CSEを使いPostgreSQLのテーブルから 一つの行を消そうとしたところ、 『更新対象のテーブルにプライマリキーが存在しない為、更新処理を行う事ができません。 更新処理を行うには、更新対象のテーブルにプライマリキーが定義されいる必要があります。』 と言うようなエラーメッセージが出てきて困っています。 どこを調べてもCSEでのプライマリキーの作成方法は載っていないのですが、そもそも『CSEでのプライマリキーの作成』は不可能なのでしょうか? もし、CSEで、もしくは他の方法で既存のテーブルにプライマリキーの定義の仕方を知っている方いましたらご教授下さい。 それか、PostgreSQLのデータの一部を(テーブルの内容全てではなく一行だけ)削除する方法ありましたらそちらもご教授下さい。 よろしくお願いします。

  • テーブルを再編集するには

    PostgreSQL7.1.3 RedHatLinux7.2 create table でtestというテーブルを作りまして、ID、nameというフィールドを作り、主キーをIDに設定しました。このテーブルにtelというフィールドを追加したいのですが、テーブルを編集するコマンドがわかりません。 また、testテーブルにいつくかデータを入力したのですが、そのデータがちゃんと入っているかどうか確認するコマンドも知りたいです。 宜しくお願いします!

  • PostgreSQLとMySQL

    データベースの学習のため、 PostgreSQLかMySQLを利用しようと考えていますが、 どちらにするか決め手が無く、悩んでいます。 利用方法はプログラムからSQL文を発行し、 データの取り出し、書き込みを行う程度なので どちらでも特に何も問題は無いと思いますが、 「こっちの方がオススメ!」みたいなものはあるでしょうか?