報奨金の編集:元の質問を残しましたが、Postgresが陥っているように見える権限の大失敗全体について良い答えを求めています。
'クライアントデータベースのインポートとエクスポート:フィールドガイド'
私は今日この仕事を手に入れました。そこでは PostgreSQL を使用する必要があります。
クライアントには2つのホストがあり、データベースへのアクセスには phpPgAdmin のみを使用します。 SSHはありません。
データをエクスポートしてから、ローカルの開発マシンにインポートする必要があります。
MySQL の方法で賢明であること私は正しいプロセスに関して少し迷っています。
PostgreSQL >>データベース>>エクスポートがあります
そしてそこから次のようになります。
私はドキュメントを作成してきましたが、実を言うと、簡単な説明が見つからず、現時点ではdbやPostgresについてはあまり気にしません。私たちがする必要があるのは、サイトPHPに取り組むことだけです。
概要/チートシート/システム管理の兄弟をガイドしてください。
編集:
データベースのインポートに関するPostgreSQLの権限を含めるように質問を変更しました。
パーミッションに関する限り、新しいPostgreSQLサーバーをセットアップすることにはもっと多くのことがあるようです。
サーバーがローカルホストではなく、GUIがないため、phpPgAdminについて具体的に質問します。
それは許可のことだと感じます http://pgedit.com/public/sql/acl_admin/index.html
クライアントボックスにSSHがないことを明確にしました。
このプロセス全体に関する簡潔なドキュメントはまだ見つかりません。私がより明確な考えを得るまで、本当に仕事を避けています。簡単にするためにMySQLdbに変換するように見えるかもしれません。
書き出す
インポート
権限に関しては、データベースダンプ(プレーンテキスト)を開いて、現在のユーザーを変更しようとしたり、テーブルの所有者を設定したりする行を探してください。次に、検索/置換を実行して、元の所有者を新しいユーザー名に置き換えます。権限の付与/変更についてまったく心配する必要はありません:D
これは、開発から本番に移行するときに常に行う必要がありました。元のデータベース/テーブルの所有者が開発者であり、起動の準備ができたら、それを顧客アカウントに変更する必要がありました。
私たちは常にpg_dump
やその他の関連するコマンドラインツールを使用してコンソールから作業していましたが、これらはWebインターフェイスにあるオプションにマップされることを期待しています。
phpPgAdminエクスポートはpg_dumpを使用します。それが何をしているのか知りたいのなら、それを読むことができます。
COPYではなくSQLとしてエクスポートすることもできます。 COPYはPostgres用であり、別のデータベースを使用する場合はSQLが必要です。また、別のデータベースに慣れていると理解しやすくなります。
'Structure and Data'で取得するのは、データベーステーブル構造、すべてのデータ、制約とキーの順に始まるSQLファイルです。
Saschaが指摘しているように、権限に問題がある可能性があります。これは開発データベース専用であるため、許可行を削除したりコメントアウトしたりする方が簡単だといつも思っています。 'OWNER'が含まれる行を削除/コメント/変更します。お気に入り
ALTER TABLE schema.table OWNER TO pguser;
各CREATETABLEステートメントには、テーブルの所有者を設定するために、これらのいずれかが後にあります。
[〜#〜]インポート[〜#〜]
SQLエラー(データによってはよく見られます。奇数文字の文字列は面倒な場合があります)がある場合は、ファイルを分割して最初に構造をコピーし、それを標準として実行する方が簡単な場合があります。 SQLクエリ。次に、データから始めて、一度に1つのテーブルにインポートします。パーツにカットすると、エラーを見つけやすくなります。特に、非常に役に立たないエラーメッセージを処理する場合。
はい、それは多くのコピーアンドペースト作業ですが、それは仕事を完了し、MySQLに移植してからPHPを変更してMySQLからデータを取得するよりもおそらく時間がかからないでしょうPostgresの代わりに。
PhpPgAdminとpgadminIIIはどちらも、SQLステートメントを実行する機能を備えています。
pgAdminIII->データベースの選択->「任意のSQLクエリの実行」ボタンを選択します。 PhpPgAdmin->データベースの選択->「SQL」リンクを選択します。
正直なところ、これは私が見つけたデータベースを移動する最も刺激の少ない方法です。時間がかかりますが、エラーが発生しない場合に限ります。
実行し、ホスティングプロバイダーから離れないでください。phppgadminだけでなく、データに直接アクセスしたい。
そのような場合のphppgadmin(およびphpmyadmin)には大きな問題があります。ダンプを取得することはできません。
理由:PHPとApacheを使用すると、実行するスクリプトの最大実行時間とメモリ制限があります。実行時間/メモリの観点からは問題にならないかもしれませんが、データベースが大きくなると、それに遭遇します。
適切なダンプを取得するには、少なくともデータベースへのアクセスが必要です(DBがネットに直接公開されている場合は、もちろんSSLで保護されている必要があります)。 SSH経由であろうと、直接psql経由であろうと、そうでなければ、ダンプを取得するための適切なオプションがわかりません。 phppgadmin(またはphpmyadmin)は、DBを参照して変更を加えたり、(より小さな)選択を行ったりするのに便利な場合がありますが、大量のデータを取得する必要がある場合はそうではありません。
PHPタイムアウト、またはバックアップ/復元を行う際のメモリ使用量が多すぎるなど、さまざまな場面で両方のツールが失敗しました。
ガイドに関しては、元のpostgresドキュメントをバックアップする方法は通常非常に優れています: http://www.postgresql.org/docs/8.3/static/backup.html
今あなたの問題のためにニースDBダンプを取得する方法:
SSHまたはpsqlアクセスをホストに直接取得するのに十分なストレスをかけることができません。ホスティングプロバイダーがアクセスを許可しない場合は、ローカルを設定してくださいPostgreSQLはプレイグラウンドデータベースを作成し、使用したいpg_dumpコマンドを送信し、SSLとパスワードで保護されたディレクトリに配置して、そこからダウンロードします。