12

SQL コードを定義するアプリケーションがあります。

mySql = "SELECT     
            sq.question, 
            qs.title, 
            sq.id as question_id, 
            sq.type,
            qs.id as option_id, 
            sri.title as rankTitle,
            sri.id as rankId,
            sfi.title as formTitle,
            sfi.id as formId,
            sq.sub_type,
            sq.sort_order
FROM        survey_questions as sq 
LEFT JOIN   question_suboptions as qs
ON          sq.id = qs.question_id 
LEFT JOIN   survey_rankingitems as sri
ON          sq.id = sri.question_id
LEFT JOIN   survey_formitems as sfi
ON          sq.id = sfi.question_id
WHERE       sq.survey_id = #{@surveyId}
ORDER BY    sq.sort_order"

このコード (二重引用符の間のすべて) を MySQL コマンド ラインに貼り付け、1 つのパラメーターを変更して実行したいのですが、MySQL の上のすべての行が表示されるという問題に遭遇しました。

1450 の可能性をすべて表示しますか? (y または n)

そして、1450 種類の使用可能なコマンド。改行とタブをすべて削除すると、貼り付けることができますが、時間がかかり、苦痛です。上記のコードを単純に貼り付けて編集し、単一のユニットとして実行する方法はありますか?

4

4 に答える 4

22

これは、ユーザーがキーを押すたびに実行されるデフォルトのmysql (CLI) の動作です ( mysqlは、基礎となるreadlineまたはEditLineライブラリ (Windows ではなく) を使用します)。Tab

デフォルトでは、ユーザーがuseデータベースに要求すると、 mysqlはテーブルとフィールドの定義を読み取ります。次に、Tabキーを押すと、 mysqlは既知のテーブルとフィールドを使用して現在の入力を簡単に補完します。

ただし、 TAB 文字 (または) を含むテキストをmysqlに貼り付けると、実際にはキーボードからキーが押されていなくても、同じ動作がトリガーされます。そして、これは迷惑になる可能性があります。\t0x09Tab


ただし、 mysqlに指定された 2 つのオプションにより、その動作を防ぐことができます。私のお気に入りは--disable-auto-rehash。もう一つは--quietまたは-qです。

  • --disable-auto-rehashデータベース、テーブル、および列名の補完を防ぐには (データベースから読み取られないため、rehash後で補完が必要な場合はコマンドを使用します)。ただし、コマンドの履歴は保持されます (↑</kbd> and ↓</kbd> keys for instance). Which is convenient.

  • --quickまたは-qmysqlが履歴ファイルを使用せず、補完も行わないようにします (データベース定義を読み取りません)。

Linux では、エイリアスを追加して自動的.bashrcに使用することができます--disable-auto-rehash

alias mysql2='mysql --disable-auto-rehash'
于 2014-12-16T10:12:29.337 に答える
4

改行とタブを削除する必要があります。ダブルタブが原因で表示され、Display all 1450 possibilities? (y or n)改行が原因で実行が早くなっています。

PHP の場合は、それを取り除くための小さなスクリプトを作成します。

echo (preg_replace("/\s+/", " ", $string));

または、他の言語に似たもの。

于 2013-03-12T15:14:07.427 に答える
4

おそらく、ステートメントをテキスト ファイルmyTest.sqlに保存してから、MySQL コマンドsource myTest.sqlを使用して実行できますか? その後、ファイル内の SQL を微調整し、変更を保存して、再度実行できます。

于 2013-03-12T15:18:08.603 に答える