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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

Q&A

2回答

1686閲覧

セキュリティの関わる問題なので削除させていただきました。

amaguri

総合スコア227

SQL

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

0グッド

0クリップ

投稿2016/07/14 07:35

編集2018/06/18 10:41

セキュリティの関わる問題なので削除させていただきました。

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

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

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

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

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

guest

回答2

0

追記2

PHP

1// 管理画面 2手入力のクエリをexecuteQueryアクションにPOST 3 4↓↓↓ 5 6// コントローラー 7public function executeQuery() { 8 // POSTデータ(クエリ)の受け取り 9 $query = クエリ; 10 11 // クエリが「更新系」か「参照系」か「その他」かをチェック 12 $flag = $this->_checkQuery($query); 13 14 if ($flagが更新系の場合) { 15 16 } elseif ($flagが参照系の場合) { 17 18 } elseif ($flagがその他の場合) { 19 20 } 21} 22 23public function _checkQuery($query) { 24 // $queryの先頭が「更新系」か「参照系」か「その他」かを調べる 25 $flag = 「更新系」or「参照系」or「その他」; 26 return $flag; 27} 28

追記1

PHP

1public function admin() { 2 // $this->request->dataにPOSTしたデータ(クエリと目印)が入っている 3 4 if(目印) { 5 // 更新系 6 } else { 7 // 参照系 8 } 9}

こんな感じでしょうか。

PHP

1 2public function updateHiveql() { 3 $query = 'UPDATE ~~'; 4 $this->_executeQuery($query,1); // 更新系 5} 6 7public function showHiveql() { 8 $query = 'SHOW ~~'; 9 $this->_executeQuery($query,0); // 参照系 10} 11 12public function selectHiveql() { 13 $query = 'SELECT ~~'; 14 $this->_executeQuery($query,0); // 参照系 15} 16 17public function _executeQuery($query,$flag) { 18 if($flag) { 19 // 更新系 20 } else { 21 // 参照系 22 } 23}

投稿2016/07/14 17:30

編集2016/07/19 07:02
coba-coba

総合スコア1409

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

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

amaguri

2016/07/19 01:07 編集

お返事ありがとうございます、やはりこちらでコマンドを一度認識させてあげないとダメですかね。。。 この場合たとえばSHOWの文でUPDATEなどの更新系コマンドの文が入るテーブル名だったりした時 更新系としても認識されてしまうのでしょうか?
amaguri

2018/06/18 09:37 編集

削除
coba-coba

2016/07/19 03:14

すみません、そもそもなんですが、HiveQLの操作はどのように行いますか? もっとも単純なのは、管理ページを作って、管理ページからadminアクションにクエリ(UPDATE~など)と目印(参照系か更新系か)をPOSTすればいいと思います。 (上に追記します。)
amaguri

2016/07/19 03:54

お返事ありがとうございます。 HiveQLの操作は 管理画面を作成しそこでHiveQLを入力して実行しています。
amaguri

2016/07/19 03:59

public function admin() { // $this->request->dataにPOSTしたデータ(クエリと目印)が入っている if(目印) { // 更新系 } else { // 参照系 } } とりますが 例えば 更新系が UPDATE DROP INSERT だとする場合 書き方は どういう風になるんでしょうか。。
coba-coba

2016/07/19 05:00

HiveQLのクエリを事前に用意しておくのではなく、管理画面で手入力するということでしょうか? その場合はクエリを受け取ったら、クエリがどのような文字列で始まるかで分ければいいと思います。 SELECTやSHOWなどで始まる場合: 参照系 UPDATEやDROPなどで始まる場合: 更新系 その他: 禁止 誰が何を書くか怖いので更にチェックはすべきですが。
amaguri

2018/06/18 09:37 編集

削除
coba-coba

2016/07/19 07:02

その書き方で細かいことは抜きにして問題無いと思います。 私なら、ということで上記に追記2を書いておきます。
amaguri

2018/06/18 09:37 編集

削除
coba-coba

2016/07/19 12:37

$query = クエリ;は管理画面で入力してPOSTして送られてきたHiveQLのクエリです。 ------------------------------------ > public function _checkQuery($query)の > $flag = 「更新系」or「参照系」or「その他」; これは$queryが「更新系」or「参照系」or「その他」のどれであるかを判定し、その結果を返します。 例えば、 更新系:1 参照系:2 その他:3 と決めておけば、後でif文やswitch文などでそれぞれ別の処理をしたい時の目印になります。 ------------------------------------ > if(stripos($arr[$i],'^INSERT') || stripos($arr[$i,'^UPDATE']) || stripos($arr[$i],'^CREATE') || stripos($arr[$i],'^DROP')) || stripos($arr[$i],'^TRANSFORM')) || stripos($arr[$i],'^LOAD')) || stripos($arr[$i],'^FROM')){ //$arr[$i]のなかに更新系が含まれている場合 } これは見づらいので良いとは言えませんが、考え方としては間違っていないです。 このコードはこれでちゃんと動くか試しましたか?
amaguri

2016/07/19 13:33

coba-coba お返事ありがとうございます。 更新系、参照系、その他それぞれに判定基準を与えてあげるということですね! コードの件ですが 現在まだ実装できておらず確認できていません。
guest

0

if文ではだめなのでしょうか?

投稿2016/07/14 09:55

koshi11

総合スコア26

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

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

amaguri

2016/07/14 09:57

お返事ありがとうございます、ifの対象とするものがわからず困っています。
amaguri

2016/07/19 06:40

if(preg_match('/^INSERT/',$arr[$i]) || preg_match('/^UPDATE/',$arr[$i]) || preg_match('/^CREATE/',$arr[$i]) || preg_match('/^DROP/',$arr[$i])){ //$subjectのなかに更新系が含まれている場合 } これでもいいんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問