2021/12/14
MySQL コマンドについての備忘録その2です。
その1はこちら。
Laravel ではCSVファイルを読み込むライブラリがあるみたいですね。
しかし、今回は直接SQLコマンドを使ってCSVファイルをインポートするやり方をエントリーします。
ユースケース
CSVファイルを作成してDBにインポートしたい。
インポートするデータはデモで「FAIFAランキング」(※2018年3月)
手順
1)テーブルの作成
2)CSVファイルの作成
3)設置
4)MySQLにログイン
5)CSVインポート作業
6)動作確認
1)テーブルの作成
MySQLにログインしてデータベース・テーブルを作成します。
テーブルの構成は以下のようにします。
table name : fifaranking
column : ranking(int11) country(varchar255) point(int11)
column : ranking(int11) country(varchar255) point(int11)
CREATE TABLE fifaranking( ranking int, country varchar(255), point int );
こんな感じです。
2)CSVファイル作成
Excel を開いてデータを入力します。
1.「名前を付けて保存」
2.ファイルの種類に「CSV(カンマ区切り)(*.csv)」を選択
Excel(2010、2013) では文字コードを 「UTF-8」 にして CSV 形式で保存することができません。
テキストエディタでもう一度開いて文字コードを「UTF8」にして保存します。
3)設置
作成したCSVファイルをCドライブ直下に置きます。
【 解説 】
サーバー(Linux)環境であれば /tmp/ に入れて、パーミッション設定します。
サーバー(Linux)環境であれば /tmp/ に入れて、パーミッション設定します。
chmod 777 /tmp
4)MySQLにログイン
【 構文 】
mysql -u { ユーザー名 } -p { データベース名 }
mysql -u { ユーザー名 } -p { データベース名 }
5)CSVインポート作業
【 構文 】
LOAD DATA INFILE 'CSVファイルへのフルパス' INTO TABLE `テーブル名` FIELDS TERMINATED BY ',' LINES TERMINATED BY "\r\n";
LOAD DATA INFILE 'CSVファイルへのフルパス' INTO TABLE `テーブル名` FIELDS TERMINATED BY ',' LINES TERMINATED BY "\r\n";
- LOAD DATA LOCAL INFILE → LOAD DATA INFILE
- TERMINATED BY ' 区切り文字 '
- LINES TERMINATED ' 改行コード '
- LOAD DATA INFILEはデフォルトでは改行コードを LF として扱う
- Excelで作成すると改行コードは CR+LF(\r\n)
- パスに日本語が入っているとNG
- インポートするcsvファイルについても、データの途中に"・"があったり全角スペースが入っているとエラーを返す
【 CSVフルパスがおかしい? 】
NG LOAD DATA INFILE 'C:\test.csv' …
OK LOAD DATA INFILE 'C:\\test.csv' …
※これはなぜか僕の環境だけみたいです。。なんで?
NG LOAD DATA INFILE 'C:\test.csv' …
OK LOAD DATA INFILE 'C:\\test.csv' …
※これはなぜか僕の環境だけみたいです。。なんで?
6)動作確認
とりあえず上位5位まで表示してみます。
select * from fifaranking limit 5;
以上です。
SQL・データベース おススメ教材(by Udemy)
動画でプログラミング学習!ドットインストール、Schoo、Udemyのどれがいい?
Udemyを使ったLaravel学習方法
Udemyを使ったLaravel学習方法
3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL
ついに動画化!日本最大級スキルシェアサービス「ストアカ」の大人気講座!元塾講師プログラマーが教える、知識「ゼロ」からの SQL 基礎!データベースとは?からCASE式まで、 SQL データ抽出の基本を短時間で習得しよう!標準 SQL 使用。
4.4(1421)
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。