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

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に必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

3834閲覧

PostgreSQL コマンドプロンプトで複数行をそれぞれ改行して実行する方法

chucky_0909

総合スコア5

PostgreSQL

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

SQL

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

0グッド

0クリップ

投稿2022/05/17 13:27

編集2022/05/17 13:49

こんにちは。SQL初心者です。
『SQL 第2版 ゼロからはじめるデータベース操作』にて学習しています。

コマンドプロンプトで下記のような複数行のSQLを実行する方法が分からず
方法をご存じの方いらっしゃいましたら、ご教授頂けますと幸いです。

CREATE TABLE Jyushoroku
(
toroku_bango INTEGER NOT NULL,
namae VARCHAR (128) NOT NULL,
jyusho VARCHAR (256) NOT NULL,
tel_no CHAR(10) ,
mail_address CHAR(20) ,
PRIMARY KEY (toroku_bango) );

ちなみに、実行すると以下のようにエンターキーで改行して入力しようとすると、shopデータベースに続くようになり、これが正しいのか正直不安です。shopデータベースに続かないように改行することはできないのでしょうか。

shop=# CREATE TABLE Jyushoroku
shop-# (
shop(# toroku_bango INTEGER NOT NULL,
shop(# namae VARCHAR (128) NOT NULL,
shop(# jyusho VARCHAR (256) NOT NULL,
shop(# tel_no CHAR(10) ,
shop(# mail_address CHAR(20) ,
shop(# PRIMARY KEY (toroku_bango) );
CREATE TABLE

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

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

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

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

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

otn

2022/05/17 13:37

単に、SQLが間違っているからエラーになっているだけで、入力の仕方は問題なさそうです。
chucky_0909

2022/05/17 14:11 編集

早速のご回答ありがとうございます!一部修正しました。 shopデータベースにSQLが続くようになっており、そこが困っています。 シンプルに改行ってできないものなのですかね;
otn

2022/05/17 14:23

ちょっと何のことを言ってるのかわかりません。
chucky_0909

2022/05/17 14:35 編集

説明不足で申し訳ありません。 以下が実行したいSQLで、 ##実行したいSQL CREATE TABLE Jyushoroku ( toroku_bango INTEGER NOT NULL, namae VARCHAR (128) NOT NULL, jyusho VARCHAR (256) NOT NULL, tel_no CHAR(10) , mail_address CHAR(20) , PRIMARY KEY (toroku_bango) ); 以下が実行結果です。 以下のようにエンターキーで改行して入力しようとすると、改行ごとにshopデータベースに続くようになり、shopデータベースに続かないように改行することはできないのでしょうか。 ##実行した結果のSQL shop=# CREATE TABLE Jyushoroku shop-# ( shop(# toroku_bango INTEGER NOT NULL, shop(# namae VARCHAR (128) NOT NULL, shop(# jyusho VARCHAR (256) NOT NULL, shop(# tel_no CHAR(10) , shop(# mail_address CHAR(20) , shop(# PRIMARY KEY (toroku_bango) ); CREATE TABLE
otn

2022/05/17 16:39 編集

> 改行ごとにshopデータベースに続くようになり、 の意味がわかりません。 ちゃんとSQLが実行されているようですが。 あるいは、ここに書いてないエラーメッセージが出ているのでしょうか?
退会済みユーザー

退会済みユーザー

2022/05/18 04:45

頼むから psql のドキュメントを読んでほしい
chucky_0909

2022/05/18 10:30

>otn様 SQLが実行されておりました。見落としがあり申し訳ございませんでした。 >spygqDJInUJeEYX様 psql のドキュメントを読んでから質問するようにします。
guest

回答2

0

psqlコマンドを使ってPostgreSQLにアクセスしているのであれば、
是非一度ドキュメントにも目を通してください。
psql Ver.13向け日本語版

psqlメタコマンド(psql起動中に使える、内部コマンド類)をいくつかご紹介します。

まずは、「\i ファイル名」とすると、指定したファイルに記述されているSQLを読み込んで実行します。
別途テキストエディタでSQLファイルを作っておいて、読み込ませることができます。
もちろん、改行込みのファイルでOKです。

それと、「\e」で直前に入力されたSQLを編集するエディタを呼び出します。
ろくに設定していないとWindowsだとメモ帳が立ち上がってしまうので、
環境変数 PSQL_EDITOR に使いたいエディタへのフルパスを記述すると良いかもしれません。
(かくいう私は、\eはめったに使わないです。)
文法ミスなどで動作しなかったSQLを簡便に直すのには使えるかもしれません。


shopデータベースへの接続については、
参考にしている書籍を読んだことがないので当てずっぽうになりますが、
管理者権限であるpostgresユーザーとして CREATE DATABASE文でデータベース作成する方法と、
コマンドプロンプトなどから直接実行できるcreatedbコマンドでの作成の方法があります。
学習する中でおそらくcreatedbコマンドにて作ったものではないかと思います。
そうであれば、別途データベースを作成したいときはその箇所の説明を参考にやり直せばよいかと。
ついでに、
ユーザーとロール、スキーマ、データベースの関係についても軽く調べてみると良いでしょう。

投稿2022/05/18 00:44

編集2022/05/18 00:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

chucky_0909

2022/05/18 10:32

ありがとうございます。
guest

0

ベストアンサー

複数行のSQLを実行する方法が分からず

すでにやってるのかと思いますが、ターミナルに貼り付けで構いません。


shopデータベースに続くようになり、これが正しいのか正直不安です。

不安な時は不安で終わらせず、処理が成功しているかを
以下のような例で確認するのが良いかと思います。
(不安なだけで成功していることはありますので)

sql

1SELECT * FROM Jyushoroku; 2-- (SELECT成功するか)とか 3¥d Jyushoroku 4-- (作成したカラム情報が確認できるか)とか

shopデータベースに続かないように改行することはできないのでしょうか。

「入力開始からセミコロンが入力されまるまでが1命令」で処理されるので運用上は問題ないはずですが、
表示が気に入らないということですかね。
PostgreSQLのコマンドラインの動きを改善してみる
↑の記事の方は設定ファイルで、セミコロンが入力されるまでプロンプト表示を変更するカスタマイズ
をしていますが、そこまで頑張るほどのメリットはないかもです。
sqlファイルを作成して、ファイルから実行すればこのような表示は出ないので
そのような代替案はあるかと思います。


補足
今回の質問は
・処理が失敗しているので成功させたい
・処理が成功しているのか分からないので確認方法を知りたい
・処理は成功しているが、表示が気に入らないので解決したい
(もっと綺麗な表示で実行できるといいな)
のどれなのか判断しづらい表現になっている気がするので、
その辺りを明記されると余分な確認のやりとりが減り解決までがスムーズかなと感じました。

投稿2022/05/17 17:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

chucky_0909

2022/05/18 10:31

ありがとうございます。質問を明瞭にするようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問