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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

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

SQL

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

Linux

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

Ubuntu

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

Q&A

解決済

2回答

11593閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

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

SQL

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

Linux

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

Ubuntu

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

0グッド

0クリップ

投稿2018/07/29 07:01

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

投稿2018/07/29 07:07

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/29 08:36

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

2018/07/29 08:44

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

退会済みユーザー

2018/07/29 09:22 編集

/communicate/sql/create_table_query.sql というパスでやりましたが駄目でした。 権限がないというのはどういうことですか?もしないのならどうすれば権限を与えれますか? あと、\I と入力したら \i: missing required argument と表示されました。どういうことですか?
sazi

2018/07/29 09:21

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

退会済みユーザー

2018/07/29 09:23

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

2018/07/29 09:29

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

退会済みユーザー

2018/07/29 09:47

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

2018/07/29 10:03

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

退会済みユーザー

2018/07/29 10:07

わかりました!!
退会済みユーザー

退会済みユーザー

2018/07/29 12:44

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

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 07:13

takahashim

総合スコア1877

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/29 08:32

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

2018/07/29 09:08

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

退会済みユーザー

2018/07/29 09:13

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

退会済みユーザー

2018/07/29 09:18 編集

あと、\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の部分は空白でした。
takahashim

2018/07/29 09:20

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

退会済みユーザー

2018/07/29 09:25

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

2018/07/29 09:32

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

退会済みユーザー

2018/07/29 09:49

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

2018/07/29 09: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 10:08 編集

いいえ。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.
takahashim

2018/07/29 10:08

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

退会済みユーザー

2018/07/29 11:32

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

2018/07/29 11: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 11: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 11:58

できました!!すいません。なぜかわかりませんが、できましたww
退会済みユーザー

退会済みユーザー

2018/07/29 12: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', '... と表示されます。どうやったら、できるようになりますか?
takahashim

2018/07/29 12: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 12:30

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

2018/07/29 12: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 12:43

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問