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

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

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

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

Q&A

1回答

7355閲覧

postgresにおけるカラムの存在確認

renren643

総合スコア279

PostgreSQL

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

0グッド

0クリップ

投稿2018/07/12 11:11

postgresで、あるカラムのあるデータが存在するか確認したいです。
(データベースの名前はreal_dateで、テーブル名はdata。今回は、linkというカラムにhttps://hogehogeというカラムが「存在しない」ことを確認したい。言語はruby)

以下のようにやると期待通りの出力が出ましたが、

require 'pg' connection = PG::connect(:dbname => "real_date") data = connection.exec("select count(*) from data where link ='https://hogehoge';") data.each do |d| if d["count"] == "0" puts "data is not exist" else puts "data is exist" end end #=> data is not exist

以下のようにやるとdata is existになってしまいます。

require 'pg' connection = PG::connect(:dbname => "real_date") data = connection.exec("select * from data where link ='https://hogehoge';") if data puts "data is exist" else puts "data is not exist" end #=>data is exist

dataを出力したら以下のようになったのですが、この出力結果はなんですか?

puts data #=><PG::Result:0x00007fcd1b0e8860>

また、select * from data where link ='https://hogehoge';で存在確認する方法はありますか?

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

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

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

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

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

sazi

2018/07/12 11:58

どうしてcount()じゃ駄目なんですか?
renren643

2018/07/12 12:10

count()でもいいんですが、他のやり方も知っておいた方がいいと思ったので。
guest

回答1

0

通常、PostgreSQLからSQLを実行するのにいちいちRubyでコードを書いたりしません。

あとでPostgreSQLではじめるDB入門 をきちんと読んでもらうとして、
とりあえず、psqlからPostgreSQLへ接続する し、データの検索(SELECT)を試してみては?

投稿2018/07/12 11:42

Orlofsky

総合スコア16415

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

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

renren643

2018/07/12 12:12 編集

回答ありがとうございます。 実はこのコードは、これだけで完結するものではなく、rubyでクローラーを走らせて、そこで取得したデータをDBに入れて、DBを参照し、条件分岐をして、クローラーの挙動を変えたいので、こういった形にしました。
Orlofsky

2018/07/12 12:32

PostgreSQLでは psql で SQLが正常に動作することを確認してから、Ruby などに組み込みます。 psql で select * from data where link ='https://hogehoge'; を実行したら対象データはありましたか?
renren643

2018/07/14 09:55

select * from data where link ='https://hogehoge'したらデータはなかったです。 PostgreSQLでは psql で SQLが正常に動作することを確認してから、Ruby などに組み込みます。 >動作確認済みです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問