PostgreSQL 8.4で既存の* .sqlファイルをインポートする方法


105

PostgreSQL 8.4を使用していますが、データベースにインポートする* .sqlファイルがいくつかあります。どうすればできますか?

回答:


142

コマンドラインから:

psql -f 1.sql
psql -f 2.sql

psqlプロンプトから:

\i 1.sql
\i 2.sql

ファイルを特定の順序でインポートする必要がある場合があることに注意してください(例:データ操作前のデータ定義)。あなたが持っている場合はbash、シェル(GNU / Linuxでは、マックOS X、Cygwinの)およびファイルはアルファベット順にインポートすることができる、あなたは、このコマンドを使用することがあります。

for f in *.sql ; do psql -f $f ; done

これはpsqlアプリケーションのドキュメントです(ありがとう、Frank):http : //www.postgresql.org/docs/current/static/app-psql.html


@moon多分あなたはSQLファイルへのアクセス権を持っていませんか?どのオペレーティングシステムを使用していますか?
Bolo

@moon PostgreSQLユーザーに関連付けられたパスワードです(ユーザーとパスのペアはPostgreSQLに保存されます)。
ボロ

8
@moon問題を3つの段階に分けることをお勧めします。1)psql実行できることを確認してください。:2)を確認し、ユーザーは、必要に応じて書き込み権限、持っているCREATEINSERTUPDATE、など3)をインポートするSQLファイルを。私が理解している限り、あなたは今、ステージ1にいます。
ボロ

@ボロ:3つの段階を答えに入れますか?
AH

@Bolo、あなたが言ったように、私は今、3番目のステップにいます。しかし、どうすればローカルマシンから.sqlファイルをインポートできますか。\ i [拡張子付きのフルパス]を試しましたが、そのようなファイルやディレクトリがないというエラーメッセージ.sqlが表示されました。例を挙げてください。

75

コマンドラインで、最初にpsqlが存在するディレクトリに到達してから、次のようなコマンドを記述します。

psql [database name] [username]

次にEnterキーを押します。psqlはパスワードを要求し、ユーザーにパスワードを与えます。

次に書く

> \i [full path and file name with extension]

次に、Enterキーを押して挿入を完了します。


私も使っています。そしてそれは機能します。しかし、私は提供されたSQLステートメントを変更します。以前は、既存の* .sqlは文字を使用していませんでした。回線の終端として。また、GOも削除する必要があります。あなたはsqlスクリプトがpsqlスクリプトではないと思いますか?
swdev

\ i [拡張子付きのフルパス]を使用しようとしましたが、そのようなファイルやディレクトリがないというエラーメッセージ.sqlが表示されました。例をアップロードしてください。ありがとう。

そのようなファイルがないことを\ iが言った場合、その位置にファイルは見つかりませんでした。絶対URLを指定することをお勧めします。私のWindowsの場合、このコマンドラインは機能しました。\ i /tmp/robert/test.sqlもちろん、そのファイルには有効なSQLコマンドが必要です。
シェビー

36

まあ、私が知っている最短の方法は次のとおりです:

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

データベース名:ファイルデータを挿入するデータベース。

ファイルパス:インポートを実行するファイルの絶対パス。

host_name:ホストの名前。開発目的では、ほとんどの場合localhostです。

このコマンドをコンソールに入力すると、パスワードの入力を求められます。


25

「/」と「\」には注意してください。Windowsでも、コマンドは次の形式である必要があります。

\i c:/1.sql

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.