木燃人の波止場

花やお寺や観光地の写真を紹介しつつ、皆さんとの交流を計りたく思ってます、気軽に見て戴き、コメントを戴ければ嬉しいです。

SQLで四苦八苦 -1 (No 2174)

2020-01-12 08:00:00 | パソコン

 私が作る「花写真鑑」には、2000種近くの花を集めている。また、花には地方により名前が異なったり、商業的目的のためにか、花にはいくつかの名前がある。これを出来るだけ多く集めたので「花写真鑑」には4000に近い、花の名前を書いている。

 これを例えば、花の名前を捜したい(検索)ときなどに、「バラ」の文字が付く花とか、「クサ」という字が付く花を探したい時に、 この4000ある花の名前表から該当する花を全て探し出したい事が、私にはよくある。

 この作業を簡単にするために、先ずは4000のデーターを「データーベース」とし、そこから検索することが出来れば、仕事は簡単に早くできるようになる。 また、これをウエブ上でやれるようにすれば、誰もが使うことが出来ると考えた。

 そこから、色々と苦悩がはじまったのであるが、既に着手から、一年以上になるのに、未だその端緒にもついていないので、その整理も兼ねて、苦労の一端を書き綴っている。 過去書いてきたのは下記である。 

 1. Java Script  (最初に取り組んだ)
 2. 目標     (改めて具体化した)
 3. やる範囲   (目標の一部でもある)       以上 「暗中模索 -1」2149
 4. PHPとMySQL (試行結果の初期) 
 5. DB と SQL  (正に暗中模索)           以上 「暗中模索 -2」2150 
 6. SQL Server (DBの名前付けたが?)         「暗中模索 -3」2151
 7. サーバー   (サーバーはいずこに?)
 8. SQL Server へのデーター書き込み       以上 「暗中模索 -4」2152

 今回はこの続編になる。

 

9. 再びPHPとMySQL

 前回(8.SQL Server へのデーター書き込み)では、SQL Server を使えば、データーベース(DB)への大量データーの書き込みまで出来ることを確認したが、肝心要なのは、その後の処理なのである。

 つまり、出来たDBをどうやって使うかなのである。 特に私の目的は上記「2. 目標」でも書いたように、ウエブ上で誰もが出来るようにすることなのであるが、私の場合は、HTML上でやりたいが、それが出来る目処が立たないのである。

 出来ないはずは無いと思うが、SQL Server を使う以上、そのためには新しい言語を習得しなければならないようであり、HTMLの延長線上にはないとの思いから、DBが出来てもその先に進むことが、出来ないものとしたのであった。

 それに変る物として、それらより未だ身近に感じる、PHPやMySQLに、勢力を向けた方が、手取り早いのではなかろうかと考え、再度これらに取り組むことにした。これは、友もPHPやMySQLに取り組むと言うのが刺激にもなった。

 

 MySQLのメイン画面

 このMySQL上にて、DBを操作することは、以前にやっており、出来ることは確認しているので、今回は省略して、次のステップへと進めることにした。

 

 

 その参考資料として、前に買った本があり、これに再度取り組んだ。 (写真は前出済み)

 

 前回、これに挑戦した内容は、前記「4.PHPとMySQL (試行結果の初期)」、「5.DB と SQL(正に暗中模索)」で書いたように、DBは出来たが、4000もあるデーターを一つずつタイピングしなければならず、いくら暇人でもそれは出来ない相談であった。

 そこで友に訪ねたら、メールで、>「ExcelデータをMySQLへ一括移行する方法」で検索すると出て来ますが・・・< とくれたので、見ると、その原理は私にも直ぐに理解できたので、早速やってみた。 幸い私はこの4000のデーターはExcelで台帳として作っていた。

 MySQLに於ける、DBへの書き込み命令は・・・  (全て文字列)
  INSERT INTO DB名.テーブル名 VALUES('値1', ’値2’, '値3','値4'・・・);
であり、Excelの表内で、&で繋ぎ逢わせるのは、子供でも出来ると踏んだのであった。

 そこで必要な箇所に列を追加し、INSERT INTO DB名.テーブル名 VALUES(’ までをA列に、B列に値1を、C列に ',' を、D列に値2を、E列に ',' を、F列に・・・・と、データーを入れて行ったが、C列もE列も ,' となり、各列最初の ' が消えるのであった。

 そこでよく調べてみると、これはExcelでは最初のシングルコーテ-ションは消える癖(?)があるらしい。だから、その部分だけは、シングルコーテ-ションを二つ重ねる、つまり  '',' とするとあった。 ダブルコーテーションではなく、シングルを二つなのである。

  ここらの解析に2時間ほど要したが、Excelの表から、コピペで大量のデータを一気に書き込む事が出来、ほっとしたのも”束の間”今度は、これを「実行」(DBへデーターの書き込み)すべく、ボタンを押すと、エラーになり受け付けないのであった。

 この後色々と試行錯誤を繰り返したあと、原因はパスワードにあると感じたので、DBを改めて作り直し、パスワードの記載しないものを作ってやって見た結果、DBが出来上がったのであるが、これは今は良くても、将来公開はできないと思いつつ、取り敢えずは先に進もうと考えた。

 

 出来上がった MySQLのDBの一例(部分的)

                                   つづく

 

コメント