質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • Linux

    3780questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SQL

    2395questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • Ubuntu

    1408questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • PostgreSQL

    1062questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQLファイルが実行できません。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 220

American

score 33

https://github.com/blobmon/communicate
上のサイトを行っているのですが、SQLファイルが実行できません。 
PostgreSQLでユーザーを指定してデータベースに入るんですけどそこから
"\i create_table_query.sql
\i functions.sql
\i functions_moderator.sql"

と入力するんですができません。入力すると、そのようなファイルはありません、て表示されました。
どうすれば、できますか? 

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

その入力だとカレントディレクトリしか検索しませんから、ファイルをフルパスで指定して下さい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/29 17:36

    \i communicate/sql/create_table_query.sql
    と入力しましたが駄目です。そのようなファイルはありません、と表示されます。

    キャンセル

  • 2018/07/29 17:44

    無いといわれるなら、指定したパスにファイルが無いか、権限が無いかのいずれかでしょう。
    /communicate/sql/create_table_query.sql
    と指定して駄目なら、ご自身の環境で確認されるしか無いです。

    キャンセル

  • 2018/07/29 18:14 編集

    /communicate/sql/create_table_query.sql
    というパスでやりましたが駄目でした。
    権限がないというのはどういうことですか?もしないのならどうすれば権限を与えれますか?

    あと、\I と入力したら
    \i: missing required argument
    と表示されました。どういうことですか?

    キャンセル

  • 2018/07/29 18:21

    環境が作れればいいんでしょうから、DBツール使われているのなら、SQLファイルの中身を貼り付けて実行して下さい。

    キャンセル

  • 2018/07/29 18:23

    どのように行えばいいんでしょうか?home/file1と作ってそれに貼り付けて、実行すればいのでしょうか?

    キャンセル

  • 2018/07/29 18:29

    DBツールは使われていますか?
    以前はpgadminについて話をしましたが。

    キャンセル

  • 2018/07/29 18:47

    いいえ。使っていません。

    キャンセル

  • 2018/07/29 19:03

    では、takahashimさんの流れで先ずは行って下さい。
    元々の回答は同じ指摘ですから。

    キャンセル

  • 2018/07/29 19:07

    わかりました!!

    キャンセル

  • 2018/07/29 21:44

    すいません、saziさん、boardを作ろうとしたらエラーが出てしまいます。解決方法を教えてください!!

    キャンセル

checkベストアンサー

0

psqlで\iというのはそのファイルを読み込んで実行する、というコマンドですね。
同じくpsqlの中で\?と入力すると、コマンドのヘルプが表示されるので、そこを見ても確認できます。
(「\i FILE                execute commands from file」という説明が表示されます。)
日本語だと、PostgreSQL 10.4文書のpsqlで紹介されてます。ページの中で\iまたは\includeで検索してみてください。

で、上記サイトの説明ですが、これはsqlディレクトリの中で実行することが期待されているようです。なので、上記リポジトリをgit cloneしたあと、

cd sql
psql -d communicate_db -U communicate_role
\i create_table_query.sql
\i functions.sql
\i functions_moderator.sql

といった流れで実行すると良さそうです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/29 17:32

    cd communicate/sql
    と入力した後、
    sudo su - postgres
    psql -127.0.01 -d communicate_db -U communicate_role
    と入力した後に行いましたが駄目でした。

    キャンセル

  • 2018/07/29 18:08

    むむ、「駄目でした」だけですとどう駄目だったのかが分からないので、エラーメッセージ等を書いてもらえるとよいかと思います。
    ちなみに、psqlで、
    \! ls
    と実行すると、「create_table_query.sql functions.sql functions_moderator.sql」と表示されますか? 違う表示がされるのであれば、psqlを実行しているディレクトリが違っているはずです。

    キャンセル

  • 2018/07/29 18:13

    エラーはさきほどと同じそのようなファイルはありませんと表示されました。

    キャンセル

  • 2018/07/29 18:17 編集

    あと、\l lsと入力したら以下のように出ました
    List of databases
    Name | Owner | Encoding | Collate | Ctype | Access privileges

    ----------------+------------------+----------+-------------+-------------+-----------------------
    communicate_db | communicate_role | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    Access privilegesの部分は空白でした。

    キャンセル

  • 2018/07/29 18:20

    なるほど、エラーの件は了解です。
    あと、実行してほしかったのは、\lではなくて\!(バックスラッシュ+エクスクラメーション)です。これはpsql環境でシェルのコマンドを実行するもので、この場合はlsコマンドを実行することになります。

    キャンセル

  • 2018/07/29 18:25

    \! lsと打ったら
    communicate_db=# \! ls
    9.5
    implech_role | Superuser, Create DB | {}
    と表示されました

    キャンセル

  • 2018/07/29 18:32

    なるほど、それは実行しているディレクトリが完全に違いますね…。
    https://github.com/blobmon/communicate のファイルはどこのディレクトリに置いたのでしょうか。ターミナルでそのディレクトリにcdコマンド等を使って移動して、それからsqlディレクトリに移動する必要があります。

    キャンセル

  • 2018/07/29 18:49

    cd communicate/sql
    と入力した後、
    sudo su - postgres
    psql -127.0.01 -d communicate_db -U communicate_role
    \i create_table_query.sql
    と入力しても、そのようなファイルはありませんと表示されました。
    ちゃんとcdしたんですが,,,,,,,,

    キャンセル

  • 2018/07/29 18:58

    もしかすると、cdを実行した時に、
    cd: communicate/sql: No such file or directory
    といったエラーメッセージが出ていたのではないでしょうか。その場合、最初の起点となるディレクトリが間違っています。
    まず最初に、communicateをダウンロード・展開したディレクトリから始める必要があります。

    例えばgithubからgit cloneで入手する場合、
    git clone git@github.com:blobmon/communicate.git
    cd communicate/sql
    といった流れになります。

    キャンセル

  • 2018/07/29 19:05 編集

    いいえ。cdはできました。ちゃんとcommunicate/sqlに入れました。
    git cloneをしようとしたら以下のエラーが出てきます。
    Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

    キャンセル

  • 2018/07/29 19:07

    ちなみにさっきは
    git clone https://github.com/blobmon/communicate.git
    と入力して行いました

    キャンセル

  • 2018/07/29 19:08

    なるほど、githubのアカウントでログインはされてないんでしょうか。https:の方がよいでしょうか。
    その場合は、
    git clone https://github.com/blobmon/communicate.git
    cd communicate/sql
    になります。

    キャンセル

  • 2018/07/29 20:32

    そのようにさっきやったのですが、やはりさっきと同じように「そのようなファイルはありませんと」と表じされます。

    キャンセル

  • 2018/07/29 20:41

    ううーん、そうですか。何が悪いんでしょうね…。
    cd communicate/sql
    のあと、
    ls|cat
    と実行すると、
    create_table_query.sql
    functions.sql
    functions_moderator.sql
    と表示されるでしょうか。表示されるんでしたら、その後、
    psql -d communicate_db -U communicate_role
    \i create_table_query.sql
    \i functions.sql
    \i functions_moderator.sql
    と実行するといけるはずなのですが…。

    キャンセル

  • 2018/07/29 20:54

    cd communicate/sql
    のあと、
    ls|cat
    と実行すると、
    create_table_query.sql
    functions.sql
    functions_moderator.sql
    >やってみたら表示されました。
    psql -d communicate_db -U communicate_role
    と入力したら
    psql: FATAL: Peer authentication failed for user "communicate_role"
    と表示されてできませんでした。なので
    psql -h 127.0.01 -d communicate_db -U communicate_role
    と入力たら入れました。そして、
    \i create_table_query.sql
    \i functions.sql
    \i functions_moderator.sql
    を入力したら、さっきと同じようなエラーがでます。

    キャンセル

  • 2018/07/29 20:58

    できました!!すいません。なぜかわかりませんが、できましたww

    キャンセル

  • 2018/07/29 21:06

    すいません、そのあとの
    INSERT INTO boards (board, display_name) VALUES ('board1', 'Board 1');
    と入力したら
    communicate_db=# INSERT INTO boards (board, display_name) VALUES ('board1', 'Board 1');
    ERROR: relation "boards" does not exist
    LINE 1: INSERT INTO boards (board, display_name) VALUES ('board1', '...
    と表示されます。どうやったら、できるようになりますか?

    キャンセル

  • 2018/07/29 21:25

    おお、よかったですね!
    でも、INSERT INTO boards...というのは何かおかしいですね…。*.sqlファイルを見た限り、boardsテーブルは作られません。
    git grep board
    で検索しても、sql/以下にはsql/functions.sqlの中に、コメント文で「-- marking last thread in the board and the post as 1」と書いてあるだけです(しかもboardで複数形のboardsではない)。
    これは、README.mdの説明か、ソースコード(SQL文)のどちらかが間違っているのではないかと思われますね…。

    キャンセル

  • 2018/07/29 21:30

    そうなんですか,,,,,,,,どうすればいいのか自分もわからないのでこれをクリアしないと次にいけないんですよね,,,,,,,,

    キャンセル

  • 2018/07/29 21:34

    私もさすがに知らないプロダクトのことはわからないので、どうしても何とかしたいということであれば、https://github.com/blobmon/communicate/issues からissueを作って、

    I got an error when I create new board:

    ```
    communicate_db=# INSERT INTO boards (board, display_name) VALUES ('board1', 'Board 1');
    ERROR: relation "boards" does not exist
    LINE 1: INSERT INTO boards (board, display_name) VALUES ('board1', '...
    ```

    How should I do?

    みたいに質問を投げてみるとかですかね…。

    キャンセル

  • 2018/07/29 21:43

    わかりました!!いろいろとありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3780questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SQL

    2395questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • Ubuntu

    1408questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • PostgreSQL

    1062questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。