perl を使って mysql を操作しています。csv ファイル(カンマ区切りのファイル)を読み込んで、mysql データベースに入力(インサート)しています。
以下は、そのサンプルです。sample.csv というファイルを1行づつ読み込み、split という機能でカンマで区切ってあるデータをそれぞれ取り出してから、mysql データベースに入力しているものです。
perl を使って mysql データベースにデータを入力する方法については、以前にも紹介させていただいたことがあります。
#!/usr/bin/perl
use strict;
use warnings;
use Web::Scraper;
use URI;
use Encode;
use strict;
use warnings;
use utf8;
use DBI;
open(IN,"sample.csv");
while( my $Meigara0 = <IN> )
{
chomp($Meigara0);
my @Meigara_list;
$Meigara_list[0] = '';
@Meigara_list = split(/\,/,$Meigara0);
my $price =$Meigara_list[1];
my $kataban = $Meigara_list[0];
my $spec = $Meigara_list[2];
my $url = $Meigara_list[3];
my $dbuser="root";
my $dbpass="xxxx";
my $dbname="sample_db";
my $dsn = "DBI:mysql:$dbname";
my $dsh = DBI -> connect ( $dsn, $dbuser, $dbpass , { RaiseError => 0 } );
$dsh->do("set names utf8");
my $sth;
my $sql="insert into sedori (flug,price,kataban,spec,url) values (-99,'" . $price . "','" . $kataban . "','" . $spec . "','" . $url . "');";
$sth = $dsh->prepare($sql);
$sth->execute;
my $num_rows = $sth->rows;
print "num_rows:" . $num_rows . "\n";
}
2015年9月7日月曜日
2015年8月26日水曜日
Ubuntu で mysql サーバーのインストール
Ubuntu 15.04 でデータベースを使ってみようと思いたちました。そこで今までも何度かインストールしたことはあるのですが、mysql サーバーをインストールしてみました。最近マリアDBというデータベースがあることを知ったのですが、それではなくて、とりあえずは、なじみのあるmysql にしました。
以下のコマンドにより mysqlサーバーをインストールしました。
sudo apt-get install mysql-server
途中で、root のパスワードを聞かれましたので、適当に入力しました。
以前にもインストールしたことはあるのですがutf-8の設定が必要のようです。
/etc/mysql/conf.d/language.cnf というファイルは存在しなかったのですが、新規に作成しました。
その後以下のコマンドで mysql サーバーに接続してみます。(パスワードを聞かれます。)
mysql -u root -p
mysql サーバーに接続したあとで status コマンドを入力して状態を表示させて以下のように characterset がすべて utf8 になっていることを確認します。
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
以下のコマンドにより mysqlサーバーをインストールしました。
sudo apt-get install mysql-server
途中で、root のパスワードを聞かれましたので、適当に入力しました。
以前にもインストールしたことはあるのですがutf-8の設定が必要のようです。
/etc/mysql/conf.d/language.cnf というファイルは存在しなかったのですが、新規に作成しました。
その後以下のコマンドで mysql サーバーに接続してみます。(パスワードを聞かれます。)
mysql -u root -p
mysql サーバーに接続したあとで status コマンドを入力して状態を表示させて以下のように characterset がすべて utf8 になっていることを確認します。
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
2013年6月23日日曜日
(VBA) ExcelのデータをMySQLデータベースに反映させる
以下のVBAスクリプトは、私がExcelで実際に使っているマクロです。Excelファイルで電話帳を作っておき、そのデータをMySQLデータベースに反映させるために使用しています。ExcelファイルのE列に電話番号を入れておきその他の列には名前、住所、郵便番号、Fax番号などを入力してあります。Excelのデータの行のうち、すでに同じ電話番号のレコードがMySQLデータベースに存在するものは、何もしません。Excelに書かれた行のうち、同じ電話番号がMySQLデータベース側に存在しないものだけ、MySQLデータベースへの追加を行っています。なお、MySQLに追加を行うファンクションが定義されておりその中で使用しているMySQL ODBC Driver がインストールされていることが必要です。データベース名はuser、接続ユーザ名はuser、パスワードはuser となっています。
https://gist.github.com/cofearabi/5845135
https://gist.github.com/cofearabi/5845135
AWSをはじめて使ってみた(株価の情報の取得のために)
AWS(AmazonWebService)をはじめて使ってみました。はじめての場合には一年間は無料枠が使用できるとのことでした。
まずは、アカウントを作成しました。その際に個人情報とクレジットカードの番号を入力することが必要でした。電話による認証もあったと思います。
アカウントの作成が終わると、メールが届きました。その中に、無料枠の使用方法が書いてあるサイトへのリンクが張ってありました。
UNIXとWindowsの両方の使用法が書いてありましたが、私ははじめはUNIXのほうを選択しました。さらにUNIXの中でもいくつか選択肢があり、無料で使用できるものには星印がついていてわかりやすくなっていました。無料で使用できるタイプの中から私はなじみのあるUbuntu13.04を選択しました。
Instance をLaunch するという処理が必要です。その際に鍵を作成して、ダウンロードしておきます。その後、Instance に対してConnect (接続)します。接続するためにはUNIXの場合には、SSHを使用します。Ubuntuから接続する際にはコマンドラインから例えば以下のように入力します。aws_myhost.pem は鍵につけた名前です。ww.xx.yy.zz はIPアドレスです。
ssh -i aws_myhost.pem ubuntu@ww.xx.yy.zz
WindowsからSSH接続する場合には、Putty、teratermなどのソフトかまたはブラウザを使用します。ブラウザを使用する場合にはJavaのプラグインが入っていることが必要です。
SSHで接続すると、UNIXのターミナルを起動したのと同じようにコマンドラインから操作ができます。
コマンドラインから、mysql サーバ,apache2,PHP,phpmyadmin などをインストールすることができました。mysql サーバや、apache2 などをインストールした場合には、外部から接続できるようにするためにSecurityのところから、ポートの3306や80をセットしておく必要があります。
Instance は、start,stop,reboot,terminate などができます。いったんstop してstartするとIPアドレスが変化してしまいます。
IPアドレスが変化しないようにするために、ElasticIPsを使うことができます。ところが、ElasticIPsをキープした状態でインスタンスを停止しておくと、それに応じて課金されてしまうことがわかりました。
使用が終了するとterminate しておきます。
株価の情報を一定時間の間隔で、取り込みMySQLデータベースに格納するという処理を、AWSで用意したこのUNIXマシンに実行させるつもりです。今までは自分のマシン上でこの処理を行なっていました。今後は、自分のPCをずっと起動しっぱなしにしておく必要がなくなります。
東京市場の株価が変動するのは、月曜日から金曜日までの、それぞれ午前9時から午後3時までです。今までは自分のPCをこの間じゅうずっと起動しっぱなしにしていたのです。
まずは、アカウントを作成しました。その際に個人情報とクレジットカードの番号を入力することが必要でした。電話による認証もあったと思います。
アカウントの作成が終わると、メールが届きました。その中に、無料枠の使用方法が書いてあるサイトへのリンクが張ってありました。
UNIXとWindowsの両方の使用法が書いてありましたが、私ははじめはUNIXのほうを選択しました。さらにUNIXの中でもいくつか選択肢があり、無料で使用できるものには星印がついていてわかりやすくなっていました。無料で使用できるタイプの中から私はなじみのあるUbuntu13.04を選択しました。
Instance をLaunch するという処理が必要です。その際に鍵を作成して、ダウンロードしておきます。その後、Instance に対してConnect (接続)します。接続するためにはUNIXの場合には、SSHを使用します。Ubuntuから接続する際にはコマンドラインから例えば以下のように入力します。aws_myhost.pem は鍵につけた名前です。ww.xx.yy.zz はIPアドレスです。
ssh -i aws_myhost.pem ubuntu@ww.xx.yy.zz
WindowsからSSH接続する場合には、Putty、teratermなどのソフトかまたはブラウザを使用します。ブラウザを使用する場合にはJavaのプラグインが入っていることが必要です。
SSHで接続すると、UNIXのターミナルを起動したのと同じようにコマンドラインから操作ができます。
コマンドラインから、mysql サーバ,apache2,PHP,phpmyadmin などをインストールすることができました。mysql サーバや、apache2 などをインストールした場合には、外部から接続できるようにするためにSecurityのところから、ポートの3306や80をセットしておく必要があります。
Instance は、start,stop,reboot,terminate などができます。いったんstop してstartするとIPアドレスが変化してしまいます。
IPアドレスが変化しないようにするために、ElasticIPsを使うことができます。ところが、ElasticIPsをキープした状態でインスタンスを停止しておくと、それに応じて課金されてしまうことがわかりました。
使用が終了するとterminate しておきます。
株価の情報を一定時間の間隔で、取り込みMySQLデータベースに格納するという処理を、AWSで用意したこのUNIXマシンに実行させるつもりです。今までは自分のマシン上でこの処理を行なっていました。今後は、自分のPCをずっと起動しっぱなしにしておく必要がなくなります。
東京市場の株価が変動するのは、月曜日から金曜日までの、それぞれ午前9時から午後3時までです。今までは自分のPCをこの間じゅうずっと起動しっぱなしにしていたのです。
2013年6月16日日曜日
Perl でインターネットとmysql に接続する
以下のサンプルはYahoo ファイナンスのデータから、株価のデータを取得して、それをmysql データベースに格納するためのPerl スクリプトです。
https://gist.github.com/cofearabi/5790670
mysql データベースには予め以下のようなSQL文で作成したテーブルを用意しておきます。データベース名:stock_db
DROP TABLE IF EXISTS `table_stock`;
CREATE TABLE table_stock (
hiduke varchar(10) NOT NULL default '2012/09/28' ,
meigara varchar(4 ) NOT NULL default '6954' ,
svalue int ,
hvalue int ,
lvalue int ,
evalue int ,
amount int ,
fvalue int ,
UNIQUE(hiduke,meigara)
);
尚、株価を取得する銘柄を、zzz.txt という名前のファイルに書き込んでおく必要があります。以下はzzz.txtファイルの例です。4桁のコードを各行の先頭に書いておきカンマで区切ります。
------------------------------------
7203,TOYOTA,2900
6954,FANUC,12000
6753,SHARP,140
9984,SOFTBANK,2500
6758,SONY,700
6472,NTN,120
2730,EDION,300
9744,MEITEC,1500
5738,SUMIKEIKIN,60
5007,COSMO,140
4714,RISOH,5000
8001,ITOUCHUU,750
9437,NTT_DOCOMO,120000
8411,MIZUHO,120
6412,HEIWA,1200
8151,TOYOTECNIKA,800
7751,CANNON,2000
5105,TOYOGOMU,190
9501,TEPCO,120
9502,CHUUBU,800
6301,KOMATSU,1200
1306,1306,0
----------------------------------
2013年6月15日土曜日
Android mysqlデータベースからデータを取り込みグラフにする
以下のアンドロイドアプリのサンプルは、mysqlデータベースに接続して、データを取り込み、それをチャート(グラフ)にするものです。チャートを表示するために、achartengine を使用しています。
https://gist.github.com/cofearabi/beaf8a5157f13390b6a0
実際には、株価のデータを使用しています。アプリを起動すると左側にリストボックスが表示され、リストの中から株の銘柄を選択すると、その銘柄の株価のチャートが右側に表示されます。
リストに表示される株の銘柄は、zzz.txt というテキストファイルにあらかじめ書き込んでおいたものです。以下は、zzz.txt の内容の例です。4桁のコードを各行の先頭に書いておきカンマで区切ります。
----------------------------
7203,TOYOTA,2900
6954,FANUC,12000
6753,SHARP,140
9984,SOFTBANK,2500
6758,SONY,700
6472,NTN,120
2730,EDION,300
9744,MEITEC,1500
5738,SUMIKEIKIN,60
5007,COSMO,140
4714,RISOH,5000
8001,ITOUCHUU,750
9437,NTT_DOCOMO,120000
8411,MIZUHO,120
6412,HEIWA,1200
8151,TOYOTECNIKA,800
7751,CANNON,2000
5105,TOYOGOMU,190
9501,TEPCO,120
9502,CHUUBU,800
6301,KOMATSU,1200
1306,1306,0
https://gist.github.com/cofearabi/beaf8a5157f13390b6a0
実際には、株価のデータを使用しています。アプリを起動すると左側にリストボックスが表示され、リストの中から株の銘柄を選択すると、その銘柄の株価のチャートが右側に表示されます。
リストに表示される株の銘柄は、zzz.txt というテキストファイルにあらかじめ書き込んでおいたものです。以下は、zzz.txt の内容の例です。4桁のコードを各行の先頭に書いておきカンマで区切ります。
----------------------------
7203,TOYOTA,2900
6954,FANUC,12000
6753,SHARP,140
9984,SOFTBANK,2500
6758,SONY,700
6472,NTN,120
2730,EDION,300
9744,MEITEC,1500
5738,SUMIKEIKIN,60
5007,COSMO,140
4714,RISOH,5000
8001,ITOUCHUU,750
9437,NTT_DOCOMO,120000
8411,MIZUHO,120
6412,HEIWA,1200
8151,TOYOTECNIKA,800
7751,CANNON,2000
5105,TOYOGOMU,190
9501,TEPCO,120
9502,CHUUBU,800
6301,KOMATSU,1200
1306,1306,0
-------------------------------
2013年6月7日金曜日
Windows7 に MySQL 5.6.12 をインストール
Windows7 に MySQL 5.6.12 をインストールしました。以下のサイトで MySQL Community Edition を選択しました。
http://www.mysql.com/downloads/
http://www.mysql.com/downloads/
2013年6月6日木曜日
Ubuntu 13.04 で mysql サーバをインストール
Ubuntu 13.04 で mysql サーバをインストールしたあとの、utf8の設定方法は以下のようにします。
●以下のように、/etc/mysql/conf.d/language.cnf を編集します。
sudo vi /etc/mysql/conf.d/language.cnf
●以下の記述を追加します。
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
●mysqlのサーバーを再起動します。
sudo /etc/init.d/mysql restart
----------------------------------------------------------------------
以下のサイトを参照させていただきました。
2013年5月3日金曜日
MySQL テーブルの変更
SQL文を使って、テーブルの変更を行うためには alter table を使用します。以下のサンプルでは、tel というテーブルに zip という列(フィールド)を追加します。
alter table tel add column zip varchar(8);
alter table tel add column zip varchar(8);
column という文字列はなくてもよいそうなので以下でも同じ意味です。
alter table tel add zip varchar(8);
参考にさせて頂いたサイト
2013年5月1日水曜日
Vbscript から Mysql に接続する
Vbscript またはVBAから Mysql に接続するには、まず Connector/ODBC をダウンロードしてインストールしておきます。次に例えば以下のようなコードを使用します。Connector/ODBCは5.2.4ansiをダウンロードしました。
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Driver={MySQL ODBC 5.2a Driver};server=192.168.xx.xx;" & _
"database=stock_db; uid=xxxx; pwd=xxxx;"
rs.Open "select * from stock", conn
rs.MoveFirst
MsgBox "--" & rs.Fields(0)
MsgBox "--" & rs.Fields(1)
MsgBox "--" & rs.Fields(2)
MsgBox "--" & rs.Fields(3)
rs.MoveNext
MsgBox "--" & rs.Fields(0)
MsgBox "--" & rs.Fields(1)
MsgBox "--" & rs.Fields(2)
MsgBox "--" & rs.Fields(3)
rs.Close
conn.Close
msgbox "end"
-----------------------------------------------------------------------
以下は、MySQL上にテーブルを作成するためのSQL文ですが、この時に最期の行にENGINE=InnoDB DEFAULT CHARSET=sjis という文言を入れないと日本語データを入力した時に文字化けします。
CREATE TABLE log_rec (
id` int(11) NOT NULL auto_increment,
access_date date default NULL,
access_time time default NULL,
agent varchar(255) default NULL,
path varchar(100) default NULL,
ip_address varchar(50) default NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=sjis;
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Driver={MySQL ODBC 5.2a Driver};server=192.168.xx.xx;" & _
"database=stock_db; uid=xxxx; pwd=xxxx;"
rs.Open "select * from stock", conn
rs.MoveFirst
MsgBox "--" & rs.Fields(0)
MsgBox "--" & rs.Fields(1)
MsgBox "--" & rs.Fields(2)
MsgBox "--" & rs.Fields(3)
rs.MoveNext
MsgBox "--" & rs.Fields(0)
MsgBox "--" & rs.Fields(1)
MsgBox "--" & rs.Fields(2)
MsgBox "--" & rs.Fields(3)
rs.Close
conn.Close
msgbox "end"
-----------------------------------------------------------------------
以下は、MySQL上にテーブルを作成するためのSQL文ですが、この時に最期の行にENGINE=InnoDB DEFAULT CHARSET=sjis という文言を入れないと日本語データを入力した時に文字化けします。
CREATE TABLE log_rec (
id` int(11) NOT NULL auto_increment,
access_date date default NULL,
access_time time default NULL,
agent varchar(255) default NULL,
path varchar(100) default NULL,
ip_address varchar(50) default NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=sjis;
2013年3月30日土曜日
Windows8 にMySQLクライアントをインストール
先日 Windows8 にMySQLをインストールしましたが、今度は、MySQLクライアントをインストールしました。
インストールしたのは、以下のサイトで紹介されていた、HeidiSQL というソフトウエアです。
http://www.awawaweb.com/201202/mysql-client.html
インストールしたのは、以下のサイトで紹介されていた、HeidiSQL というソフトウエアです。
http://www.awawaweb.com/201202/mysql-client.html
2013年3月28日木曜日
2013年3月1日金曜日
Androidアプリ MySQLクライアント
Androidアプリ で無料のMySQLクライアントを探しました。
●MySQLマネージャ
https://play.google.com/store/apps/details?id=com.xuecs.mysqlmanager&hl=ja
これは、いったんインストールしましたが、あまり使わないうちにアンインストールしてしまいました。MySQLサーバに接続できない時に、画面がまっくらになってだんまり状態になってしまうためです。なんらかのエラーメッセージを出して欲しかったです。
●vcroc mysql client
https://play.google.com/store/apps/details?id=com.vcrox.mysqlclient&hl=ja
次にインストールしたのがこれです。MySQLサーバに接続できない時に、それなりにエラーメッセージを出力してくれました。
MySQLサーバに別のマシンから接続できない
UbuntuのマシンにMySQLサーバをインストールして、そのマシン自身でmysqlコマンドを入力して接続できることは確かめたのですが、別のマシンからは、接続できない状況でした。インターネットで調べてみると解決策が書いてありました。
その1 外部から接続するためのユーザを作成して権限を与える
その2 /etc/mysql/my.cnf ファイルを編集して、bind-addressの行をコメントにする
上記のふたつを行ったところ、別のマシンから接続することができるようになりました。
その1 外部から接続するためのユーザを作成して権限を与える
その2 /etc/mysql/my.cnf ファイルを編集して、bind-addressの行をコメントにする
上記のふたつを行ったところ、別のマシンから接続することができるようになりました。
2013年2月27日水曜日
Androidアプリ開発 mysqlサーバへの接続
Androidアプリ開発で mysqlサーバへの接続を行いselect文を使ってテーブル内のデータ(フィールド)を取り込んで画面に表示するサンプルです。エミュレータが動いているPCのアドレスは、エミュレータから見ると10.0.2.2となるそうなので、それをmysqlサーバのアドレスとしています。stock というデータベース内のtable_stock というテーブルにアクセスして、hidukeおよびpriceというフィールドの値を取り込んでいます。なおMySQL Connector/J(JDBC Driver for MySQL)をダウンロードしてライブラリパスを通しておくことが必要です。
参考サイト
githubソースコード
参考サイト
githubソースコード
2013年2月26日火曜日
Ubuntu 12.10 mysqlサーバをインストールその他
Ubuntu 12.10 で mysqlサーバをインストールしてみました。12.10の以前のバージョンでもインストールしたことがあるのですが、すっかり忘れていました。やり方は以下のように入力します。
sudo apt-get install mysql-server
途中で、root のパスワードを尋ねられますので、入力します。
なお、apache や PHPのインストールの仕方は以下を参考にさせてもらいました。
http://dqn.sakusakutto.jp/2008/08/ubuntuphp5.html
http://chaos-fractal.blogspot.jp/2011/11/ubuntu-apache-php.html
また phpmyadmin のインストールは以下のサイトを参考にさせていただきました。
http://d.hatena.ne.jp/GreenTea2010/20110520/1305905166
sudo apt-get install phpmyadmin
次に以下のように入力しました。
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin
それからサーバを再起動します。
sudo service apache2 restart
ブラウザに http://localhost/phpmyadmin/ と入力するとphpmyadmin が使用できるようになりました。!
sudo apt-get install mysql-server
途中で、root のパスワードを尋ねられますので、入力します。
なお、apache や PHPのインストールの仕方は以下を参考にさせてもらいました。
http://dqn.sakusakutto.jp/2008/08/ubuntuphp5.html
http://chaos-fractal.blogspot.jp/2011/11/ubuntu-apache-php.html
また phpmyadmin のインストールは以下のサイトを参考にさせていただきました。
http://d.hatena.ne.jp/GreenTea2010/20110520/1305905166
まずは以下のように入力します。
sudo apt-get install phpmyadmin
次に以下のように入力しました。
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin
それからサーバを再起動します。
sudo service apache2 restart
ブラウザに http://localhost/phpmyadmin/ と入力するとphpmyadmin が使用できるようになりました。!
登録:
投稿 (Atom)




