MySQLのSOURCEでSQLファイルを扱う

MySQLで外部SQLファイルを読み込ませてデータベースやテーブルを作成するときによく使うのが、下記のコマンド。

mysql> SOURCE <外部ファイル名>;

この「SOURCE」がくせ者で、MySQLクライアントのビルドインツールなんですぅ。(ようは、MySQLクライアントの構文内でのみ有効ってこと)
MySQL Connector/C++なんかでプログラムを組むときやMySQL Query Browserで試験的にクエリを実行したいとき、この「SOURCE」をクエリとして使えると勘違いしやすいんです。
mysql クライアント上ではさもクエリのように振る舞うのに、プログラム内では「シンタックスエラー」となり、思考がスパイラル状態になります。

どうしても、プログラム内から外部ファイルで管理されているSQLを実行したい場合は、

    • 外部ファイルを読み込んでクエリをぶん投げる。
      [難点] 外部SQLファイルを同時配布したくない場合にどうするか。
    • mysql 構文をシェル(コンソール)プロセスに直接ぶん投げる。
      [難点] 外部プロセス発動になるので管理が面倒。
    • (時と場合によっては)ストアドプロシージャを使う。
      [難点] 後からアタッチするようなサブプログラムの場合、組み込むために外部からの供給が必要となり、堂々巡り。

だと思う。(他にもあると思うが手っ取り早い順で・・・)

開発にあたっていろいろ制約があり、外部SQLファイルは同時配布しないことになっていたので、外部のSQLファイルをプログラム内のリソースに取り込み、読み込んだリソーステキストをサーバにぶん投げることで「SOURCE」と同じような処理を実現したでやんす。まだ未検証だけど、読み込む外部ファイル(今回はリソースとして組み込んだファイル)のコメント等は無い方がいいか、もしくは読み込んだ先で余分なものを取っ払ってからクエリを投げた方が無難じゃないかなぁ~と思われ。

今回特殊な事情で、MySQLの「CREATE~FEDERATED」を使用しなくちゃいけなかったんだが、その話はまた後で出来ればと。

キーボードを・・・いや、それは違うぞ

友人から相談が。それは、

自分のパソコンから嫁を遠ざける方法

聞いた瞬間、根本的な疑問が頭に浮かんだが、すぐに聞き出すと面白くないので話に乗ってみた。
友人曰く、自分が不在の時に嫁がパソコンを触っている節があるのだが、触るなとも言えない。
突っ込みどころ満載なわけだが、グッとこらえて、パソコンの使用環境や彼らのスキルを聞いてみた。

  • 友人、嫁共にそれぞれ1台を有する(友人はデスクトップ、嫁はノート:共にOSはWindows)
  • 嫁が友人のカードで買い物をしている節はない。
  • 嫁はOSのセットアップやコマンドを駆使するようなスキルは持ち合わせていないが、ある程度のアプリ操作ぐらいはできる。
  • 両者共に日本語以外は苦手

やんわり遠ざける方法として伝えたのは、

  • 言語設定を英語にしろ。(言い訳:何となくかっこいいという自己満足風を装う)
  • キートップに日本語が刻印されていないキーボードに変更(言い訳:同上)
  • 無刻印のキーボードを使う(言い訳:同上、もちろん古いキーボードは廃棄)

最後の無刻印キーボードの場合、ブラインドタッチができる人でない限り寄りつきません。最近のWindowsはほとんどマウス操作で事足りるのに、不思議なもので大方の人は道具が自分に合っていないと自分から遠ざかっていく。

友人曰く、その手があったか!と驚いていたが、さてここからが私の本題。

:「触るな」と言えばいいじゃん。
:いろいろと勘ぐられるじゃん。
:勘ぐられてやましいことでもあんのか?
:・・・
:もしかして「エロ」系?
:いや、そうじゃないんだ。
:スマホの住所録をパソコンで管理&同期しているから・・・
:もしかして、スマホのログインロック掛けて、頑なにログイン方法教えていないとか?
:うん、掛けてる
:あぁ~、この時点でグレーじゃん。そんで、やましい人でも登録してるの?
:・・・
:おまえさ~、もうその住所録ぶっこ抜かれてるよ。
:スマホの機種やOSが分かれば大体察しが付くだろ。諦めろ。
:まじかぁ~、・・・
:やましいことするんだったら、アナログ(自分の頭)を頼れ。デジタルを頼るな。
:「・・・、ところでおまえはどうしてるの?」
:アホタレ、世界中の男がおまえと同じだと思うな。
:全部オープンだよ、携帯もパソコンも。
:嫁はパソコン詳しくないけど、俺のスマホ触って電話掛けてるし。
:でも、おまえ仕事用の・・・
:あのなぁ~、個人用をオープンにしているから、「こっちは触るなよ」が通じるんだよ。
:それに、仕事用にやましいものぶち込んでばれたら、そっちの問題の方がでかいわ。
:「はぁ~」(ため息)
:まぁ~頑張れ。(何を?)

この後、彼らがどういう結末を迎えたかは知らない。けれど、このネタを掲載するにあたり、彼の許可を得ることができたということは、大火事にはなっていないと思われ、消火に失敗した連絡もないし、嫁の連絡網にも引っかかってこないらしいので、大人の対応をしたんだろうと思われます。

う~ん、何時の時代も「男はバカだねぇ~」と思う今日この頃。

 

半年ぶりに更新・・・ぉぃ

はてさて、半年ぶりに更新・・・

かなりサボってましたな。

忙しかったと言えば忙しかったし、今も。

先週までは、固定IP追加で、宅内ネットワークの再構成とサーバ構築。サーバ構築ついでに、VMware ESXi をv5 に数台をアップグレード、wordpressもアップグレード、その他多数。芋づる的にやることが増えてメモリと体力が上限に張り付いたまま・・・とほほ。

とはいえ、いろいろとやらかしたので失敗ネタ豊富です、ぼちぼち更新していこうかと。

awstatsでサブページがリンク切れ~

当方のサイトはawstatsで簡単なアクセス解析をしているのですが、生成される解析結果のトップページからのサブページへのリンクと実際にawstatsがはき出すhtmlファイル名が異なっており、リンク切れを起こしておりました。まぁ、外部からはアクセスできないので、放置しておいても問題ないのだが・・・
トップページ(index.html)からサブページのリンクは、「ホスト名.yyyymm.カテゴリ.html」なのだが、実際に作成されるファイル名は、「awstats.ホスト名.yyyymm.カテゴリ.html」。つまり、実際に作成されるファイルに「awstats」が付帯している。
調べてみると、バージョン6.9.5以降のバグらしく、当方が使用しているバージョンは7.0.3 in Fedora15。ビンゴでした。
さて、どうしたものかと思案した結果、awstatsのソースを弄っても、バージョンアップごとに手入れ部分を修正するのも面倒だったので、外的処置で逃げることに。
そうです、生成されたindex.htmlのリンクを強制的に書き換える方法です。
何らかのスクリプトで解析ページ生成をしていると思うので、そのスクリプトの最後に下記を挿入。
(解析ページ保存先やホスト名は適当に書き換えてください)

pushd <解析ページ生成ディレクトリ>
sed -i "s/href=\"witkitty\.com\./href=\"awstats\.witkitty\.com\./g" index.html
popd

言わなくてもお分かりかと思いますが、注意点は「置換文字列中の特殊文字にご注意を!」です。
上記sedコマンドでは、ダブルクォーテーション(”)とピリオド(.)は特殊文字になるので、特殊文字として認識しないようバックスラッシュ(\)で意図的に指定しています。

とまぁ、これで一時的に回避しておいて、また問題が出たらその時にでも。

Page 1 of 2812345...1020...Last »