min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

CSVをmysqlに列指定で取り込む

www.youtube.com

 

カンマ区切りCSVmariadbに取り込みたい

mysqlmariadbCSVの取り込みは当然できるだろうけど今はChatGPTに聞くのが一番早い。

取り込み対象のCSVを用意

これ。ヘッダは2行目のYEARからECONOMYまで。

ファイルにコマンドを書いて取り込み実行

取り込みコマンドLOAD DATA...を書いたテキストファイル.sqlを用意する。

$ vim load_data_to_mariadb.sql

LOAD DATA INFILE 'public/myKINRInenpyo55comma.csv'

INTO TABLE nenpyo

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

(@var_his_date, TITLE, NAIYOO, KIJIURL, PICURL, COUNTRY) 

SET sdate=STR_TO_DATE(@var_his_date, '%Y-%m-%d'), title=TITLE, hitikoto=NAIYOO, kijiurl=KIJIURL, picurl=PICURL, continent=COUNTRY;

 

取り込み実行

$ mysql -u root -p myLaravel01 < load_data_to_mariadb.sql

 

 



 

 

 

eiga.com





Laravelでデータベースのマイグレーション(要はCREATE.sqlをLaravelにやらせちゃえって機能)

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

DBマイグレーション

言葉の意味はイマイチ分からんのだが要は(いつもなら)SQLで CREATE.sqlってテキストファイル作って例えば

CREATE TABLE NonAggTbl (
 id VARCHAR(32) NOT NULL,
 data_type CHAR(1) NOT NULL,
 data_1 INTEGER,
 data_2 INTEGER,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

とかやるのダルいし、次にDB作るときにそのテキストファイルを無くしちゃうと全く同じ環境(DB)を作れなくて困ったりするので、DB作成それ自体をLaravelにやらせちゃえってのがマイグレーション機能というものらしい。

年表アプリを作ってて、歴史上のできごとをnenpyo.csvファイルに書いてるんだけど、いろいろ限界なのでそろそろこれをDB(nenpyoテーブル)に移行して、Laravelアプリから触われるようにしたいってのが今回の趣旨。マイグレーションファイルを作る。

$ php artisan make:migration create_nenpyo_table

これで 日付_create_nenpyo_table.php というファイルができるので、それを編集していく。

$ vim database/migrations/日付_create_nenpyo_table.php

$tableオブジェクトの ->timestamp()メソッドにより、DBテーブルの中にはおなじみのcreated_at列とupdated_at列が作られる

artisan がマイグレートを実行していくと…

.envで設定した myLaravel01データベースの中に、新たにテーブルnenpyoができた。

$ vim .env

mysql> use myLaravel01;

mysql> show tables;

mysql> desc nenpyo;

なるほど。こりゃ便利だわ。

 

Laravelのクエリビルダ習得した次にEloquent(DBをオブジェクトとして扱う機能エロクエント)学ぼうと思ったけどヤメた(車輪の再開発だなコレ)

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

Eloquentいらん

せっかくSQLという完成された仕組みがあるのに、無理にそれをPHPで扱えるオブジェクトにする発想がどうも好きになれん。

クエリビルダでSQLガッツリ組んで、結果だけをPHPで表示したほうがどう考えても速度が出るし、以前いた会社ではマジで速度が重要視されていて、Oracleからプロを召喚してオプティマイザやらIndex貼り直しやらのチューニングでSQL速度改善を(お客の希望もあったからマジ血眼で)してたので、その経験から言うと、わざわざEloquentでオブジェクト化してSQLの実行速度を落とす意味がわからん。てか開発の現場では実用になるまい。

と思ったらやっぱ、クエリビルダのほうが1,000倍速い!って検証記事があった。

qiita.com

ってことで、Eloquentを学ぶのは今後時間のあるときに(オブジェクト思考の)考え方を学ぶためにやるとして、当面はめっさ速度が出るWebサービスを目指して手元アプリ作っていこうと思う。

とりあえず歴史年表アプリをLaravelでやるアプリのお試しは完成した。

これはCSVから読みんこでるけど、DBから読み込むようにLaravelで作り込んでみる。

min117.hatenablog.com

 

お名前.com サーバー契約なし(ドメインのみ)の環境で Laravel を動かす

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

お名前.comのドメイン名のみ契約した状態でもssh接続すると /home/ユーザ名/public_html/20210101xxx.onamaeweb.jp/という公開フォルダに接続できる。

そこにおいたファイルは(ドメイン名は長ったらしいが)外部公開はされてるわけで、ここにtoC向けのサイトというよりは、例えばShopifyのWebhookに使うための自作公開APIを置いて商品注文をコントロールする場所には使えるわけだ。

Laravelを置いておけばAPI作成も楽になろう。インストールしてみる。

 gn-office.pro

 

これから打つコマンド(Laravelインストール用)一覧

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php composer-setup.php

$ php -r "unlink('composer-setup.php');"

$ mkdir ~/bin

$ mv composer.phar ~/bin/composer

Laraveインストールやってみる

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php composer-setup.php

$ composer create-project laravel/laravel production "^10.0"

これは不要だった(公開ディレクトリのシンボリックリンク

これはやらなくても公開できたのでスルー。

ln -s ~/production/public/.htaccess ~/public_html/example.com/

ln -s ~/production/public/favicon.ico ~/public_html/example.com/

ln -s ~/production/public/robots.txt ~/public_html/example.com/

ln -s ~/production/public/web.config ~/public_html/example.com/

ln -s ~/production/public/index.php ~/public_html/example.com/

ln -s ~/production/public/mix-manifest.json ~/public_html/example.com/

ln -s ~/production/public/js ~/public_html/example.com/

ln -s ~/production/public/css ~/public_html/example.com/

ln -s ~/production/public/storage ~/public_html/example.com/

 

Laravelインストールフォルダ/public/.htaccessの編集

2行目から4行目の<IfModule>の記述を削除すると、Laravelインストールフォルダ直下のpublicが公開できる。

 

コントローラ作成

$ php artisan make:controller コントローラ名

$ vim Laravelインストールフォルダ/プロジェクトフォルダ/app/Http/Controllers/コントローラ名.php

DBマイグレーションファイルの作成

$ php artisan make:migration create_TraDB_table

Schema::create('テーブル名', function...

touchコマンドでDBの実体(ファイル)を作る。sqlite3はファイルベースのDBだから。

$ touch database/DB名.sqlite

$ php artisan migrate

userテーブルは元からあったらしくエラーになってしまった。shopsテーブルでも作るか…





 

bash の for i in $(seq 50 60) ; do echo "$i"; done と同じ処理を、Lavarelのblade内の@foreachで実現するコード

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

Laravelのblade内での単純なforループ

 

 

AWS Cloud9 の利用料金は

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

AWSたっか

一晩(9H)動かしただけで100円弱かかりおった。

これじゃ1日24時間動かしたら300円近い。

30日で9,000円。とてもじゃないが常時立ち上げておくことはできない。こんなんじゃ自宅サーバのほうがはるかにマシなわけだ。

 

そう考えるとAWSへの参入障壁は意外に高い。環境を作るのに経験と知識がいるし、作ったところでいつどれだけカネがかかるかが分かりにくい。知らないうちに大金がかかるから、みんな使うのをためらう(資格試験でも目指さない限りは)。

しかし裏返せば、そのぶん競争相手がいない技術を身につけることができるわけで、労働市場での一定の競争力は身につくとも言える。Amazonのボッタクリをうまく避けながら、資格だけ取る方向で検討してみる。

 

min117.hatenablog.com

 

AWS Skill Builder 無料で認定試験の対策

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

Skill Builder

やっぱあるじゃないのこういう良いサービスが

explore.skillbuilder.aws