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

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

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

pgAdminは、オープンソースのPostgreSQL管理ツール。様々な機能を持ち、コマンドラインベースでPostgreSQLへ行う操作のほとんどをpgAdminを用いて実行することができます。

PostgreSQL

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

Q&A

解決済

3回答

1617閲覧

Postgresが動作しているデータベース「dummy」内でREADME.mdという文字列がどこかあると思うのでSQL文で検索したい

hirochin

総合スコア21

pgAdmin

pgAdminは、オープンソースのPostgreSQL管理ツール。様々な機能を持ち、コマンドラインベースでPostgreSQLへ行う操作のほとんどをpgAdminを用いて実行することができます。

PostgreSQL

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

0グッド

0クリップ

投稿2019/06/18 05:06

編集2019/06/18 08:37

お世話になっております。

前提・実現したいこと

pgAdminIIIでSQL文を書いて文字列を検索したい

質問の内容

Postgresが動作しているデータベース「dummy」内で
README.mdという文字列がどこかあると思うのでSQL文で検索したい
と思っております。

pgAdminIIIで見ると

localhost
| +データベース
|   +dummy
|    +スキーマ
|      +sys
|       +テーブル
|        +doc_hoge
|        +doc_fuga
|         :
|         :

でのdoc_hogeやdoc_fugaにあると思うので

SQL

1 2SELECT README.md FROM doc_*

とやってみたところ

ERROR: リレーション"doc_"は存在しません LINE 1: SELECT README.md FROM doc_* ^ ********** エラー ********** ERROR: リレーション"doc_"は存在しません SQLステート:42P01 文字:23

と怒られました……

大変申し訳ないのですが
お力添え出来ないでしょうか?

試したこと

グーグルでpgAdmin SQLと検索したのですが
よい例を見つけられませんでした……

補足情報(FW/ツールのバージョンなど)

OS:Win10(64bit)

以上基本的なことを問い合わせて申し訳ないのですが
上記お問い合わせいたします。

補足画像

イメージ説明

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

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

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

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

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

yoorwm

2019/06/18 05:24

README.mdというのは、カラム名なのでしょうか?
hirochin

2019/06/18 05:28

ただの文字列でカラム名ではないと思います…… 初心者故あいまいで申し訳ございません。
guest

回答3

0

どのスキーマのどのテーブルのどの文字型カラムか探すのは大変ですから、
とりあえず、PostgreSQLのCSV出力(Export)方法 でCSVに出力して、エディタでgrepしては?

投稿2019/06/18 05:16

編集2019/06/18 05:28
Orlofsky

総合スコア16415

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

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

hirochin

2019/06/18 05:19

Orlofsky様 コメントありがとうございます。 そのエクスポートするテーブル名が不明なので困っているのです……(´;ω;`)ウゥゥ
yoorwm

2019/06/18 05:23

全部エクスポートすればいいだけでは?
Orlofsky

2019/06/18 05:28

全テーブルをエクスポートします。
hirochin

2019/06/18 05:30

その”全部エクスポート”のやり方がググっても分からないのです…… 本当に初心者で申し訳ないです……
yoorwm

2019/06/18 05:40

ダンプする、という言い方もあるので「dump psql」辺りで検索すると、周辺知識もついていいかもしれません
hirochin

2019/06/19 04:21

Orlofsky様 コメントありがとうございます。 ググったりしたのですが SQL文で見つからなかったのです……
guest

0

情報スキーマのcolumnsの内容でピックアップすればどうですか。

探しているのは文字列なので、型(data_type)を条件に加えればある程度絞り込めると思います。
以下はシステム系のテーブルは除いた抽出例です。

SQL

1select table_schema, table_name, column_name, data_type 2from information_schema.columns 3where table_name in (select relname from pg_stat_user_tables) 4order by table_schema, table_name, ordinal_position

data_typeがARRAYの場合も考慮する場合は、element_typesも合わせて参照するようにします。

SQL

1select table_schema, table_name, c.column_name, c.data_type, e.data_type 2from information_schema.columns c 3 LEFT JOIN information_schema.element_types e 4 ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier) 5 = (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.collection_type_identifier)) 6where table_name in (select relname from pg_stat_user_tables) 7order by table_schema, table_name, ordinal_position

追記

バックアップはテキストベースで出力も可能ですので、それを検索してはどうでしょうか
pgadmin3でバックアップの形式をplainで指定すれば、バックアップされたファイルをテキストエディタで値が確認できます。

投稿2019/06/18 07:09

編集2019/06/19 00:51
sazi

総合スコア25138

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

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

hirochin

2019/06/18 07:39

sazi様 ありがとうございます。 頂いたSQLのtable_name character varying で ``` : "doc_status" "doc_status" "doc_status" "doc_status" "doc_status" "doc_tag" "doc_tag" "doc_tag" "doc_tag" "doc_temp" "doc_temp" "doc_temp" "doc_temp" "doc_temp" "doc_temp" "doc_temp" "doc_usergroup_link" "doc_usergroup_link" "doc_usergroup_link" "doc_usergroup_link" "doc_usergroup_link" : ``` とデータの一部は取れたのですが data_type character varying で ARRAYとなっている部分にREADME.mdが入っているかも知れないので すべては取得出来ませんでした…… もう少し調べてみます。 ありがとうございました。
sazi

2019/06/18 07:50

ARRAYの場合について追記しました
hirochin

2019/06/18 07:55

sazi様 度々申し訳ございません。 ありがとうございます。 ですがdata_type character varyingがARRAYやjsonの場合もあり そちらではPgAdmin3のSQLエディタでは表示されないため 困っております……(´;ω;`)ウゥゥ 難しい質問本当に申し訳ございません。
sazi

2019/06/18 07:58

PgAdmin3でもarrayやjson型のデータでも結果は表示されますよ? 抽出条件の記述の話ですか?
sazi

2019/06/18 08:02

テーブルの解析を行った方が、急がば回れで、早道かもしれませんよ。 テーブル数が大量でなければ、関係のありそうなテーブルをピックアップする方が早いと思うのですが。
hirochin

2019/06/18 08:12

コメントありがとうございます。 >PgAdmin3でもarrayやjson型のデータでも結果は表示されますよ? >抽出条件の記述の話ですか? に関して元質問に画像を貼りました…… こちらどこをクリックしてもARRAYやらJSONのデータが開けないのです…… テーブル数が大量なのでどうにかしてREAD.meという文字列を見つけたいのです……
sazi

2019/06/18 09:26 編集

回答したのはテーブルの中身を見るものではないですよ。 あくまで、候補を探し出すためのものです。 カラム数で309というなら、テーブルにあたりを付けて絞れば数は減りますし、そんなに手間じゃないと思いますけど。 手書きが面倒なら、結果をエクセルに張り付けて、SQL文を生成するようにするとかでもいいんじゃないでしょうか。
hirochin

2019/06/18 09:35

sazi様 コメントありがとうございます。 引き継いだばかりでテーブルにあたりを付ける事が出来ないのです…… pgAdmin3で結果をExcelに貼ろうと出力ビューをコピーしてExcelに貼りつけましたが見れず…… おっしゃっていることが私の理解が足りないのは把握しているのですが 結果をpgAdminで取得する方法は上記のやり方では無いのでしょうか?
sazi

2019/06/18 10:06

結果というのが「README.mdという文字列がどこかあると思うのでSQL文で検索」の結果という事なら、私の回答は直接目的を果たすものではありません。
sazi

2019/06/18 10:09

> pgAdmin3で結果をExcelに貼ろうと出力ビューをコピーしてExcelに貼りつけ をやるなら、pgAdmin3の設定で、文字の区切りや項目の区切りをそれぞれ(")や(,)の指定を行っておく必要があります。 エクセル側で、「データ→区切り位置」で指定する方法もありますが。
hirochin

2019/06/19 04:07

sazi様 本当に度々申し訳ございません。 ツール>サーバーバックアップとしても ファイルでバックアップを取得するsqlを書かないと先に進めない気がしております…… >pgAdmin3の設定で、文字の区切りや項目の区切りをそれぞれ(")や(,)の指定を行っておく必要があります。 に関してはファイル>オプション>クエリーツール>Resultgrid で出来るのですが元のJSON文字列やら配列の方にデータが無いのです…… 大変申し訳ないのですが もう少しご助力頂けないでしょうか?
sazi

2019/06/19 05:19 編集

追記を確認下さい。 元の回答及びこれまでのコメントは、’README.md’を探すためのSQLを組み立てる為の参考情報を取得する方法で、 追記部分は、データベースのデータに対して直接、’README.md’を探すというものです。
hirochin

2019/06/19 06:05

コメントありがとうございます。 backupをplainでやっても「バックアップ」をクリックするには SQLが必要そうなので困っているのです…… >pgadmin3でバックアップの形式をplainで指定すれば、バックアップされたファイルをテキストエディタで値が確認できます。 のPlainで指定して全てバックアップ取得するsqlが不明なので ご助力頂けますようお願い申し上げます。 理解が足りなくて申し訳ないのですが 仰っている意味が読み取れていないのでしょうか?
sazi

2019/06/19 07:50 編集

>バックアップ取得するsqlが不明 pgadmin3でデータベース選択して右クリック。バックアップを選択→画面が開く。必要な情報を入力して実行。 コマンドなどは不要ですけど?
hirochin

2019/06/20 02:54

ああああああああああああああああああああああああっ sazi様おっしゃる通りでしたっ ありがとうございますm(__)m ファイルっていう部分にsql文を書かないといけないのかと勘違いしておりましたっ 若輩者なのに見捨てないでご返信して頂き本当にありがとうございましたっ
guest

0

自己解決

sazi様からご忠告頂いたように

pgadmin3でデータベース選択して右クリック。バックアップを選択→画面が開く。必要な情報を入力して実行

で出来ましたっ
ファイルとの指定が勝手にsql文と勘違いしていた模様です……

大変失礼いたしました。
感謝いたします。

投稿2019/06/20 02:57

hirochin

総合スコア21

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

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

hirochin

2019/06/20 03:05

ちなみにバックアップ取得したデータの文字化けが解決されないのが不明……(+o+)
sazi

2019/06/20 03:22

確認しているエディタの文字コードをバックアップデータに合わせるか、バックアップ時にエンコードで文字コードを指定して下さい。
hirochin

2019/06/20 03:46

sazi様ありがとうございます。重ねてお礼申し上げます。
hirochin

2019/07/02 07:23

ちなみに保存する時には フォーマットはPlain エンコーディングはUTF8 とかにしてやりました。 また使用する時が来てアレ?と思ったのでメモ失礼します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問