EC2にMySQLクライアントを入れている必要がある。
MySQLクライアントをインストールする作業はここでは割愛する。
ssh -i /Users/<ユーザーネーム>/Desktop/<キーペアファイル名>.pem ec2-user@<パブリックIPアドレス>
RDSに接続します。RDSのエンドポイントはAWSのコンソールからRDSの「接続とセキュリティ」タブから取得する。
mysql -u admin -p -h <RDSのエンドポイント>
パスワードを要求されるので予め設定したパスワードを入力する。
パスワードが正しければ接続する。
続いてデータベースを構築する。
mysql> create database <DB名>;
構築したデータベースを確認する。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sample_db |
| sys |
| test |
| transfer_dbinfo |
+--------------------+
7 rows in set (0.00 sec)
今までテスト用で作成したデータベースが表示される。
次に使用するデータベースを指定する。
今回使用するデータベースはtransfer_dbinfoを使用する。
mysql> use transfer_dbinfo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Database changedの表示が出る。
テーブルを確認する。
mysql> show tables;
+---------------------------+
| Tables_in_transfer_dbinfo |
+---------------------------+
| sample |
| sample01 |
| sample02 |
| sample03 |
| sample04 |
| sample05 |
| samplelist |
| transfer |
| user |
| users |
+---------------------------+
10 rows in set (0.00 sec)
①作成されているsample01を削除
②新規テーブルを作成
③CSVファイルをインポートする
mysql> drop table sample01;
mysql> show tables;
+---------------------------+
| Tables_in_transfer_dbinfo |
+---------------------------+
| sample |
| sample02 |
| sample03 |
| sample04 |
| sample05 |
| samplelist |
| transfer |
| user |
| users |
+---------------------------+
9 rows in set (0.00 sec)
mysql> TRUNCATE TABLE sample01;
Query OK, 0 rows affected (0.04 sec)
# ちなみにテーブルに登録されている値を全削除する場合はTRUNCATE TABLE文を使用する。
もう一度、新しいテーブルを作成する
mysql> create table sample01(
-> NAME varchar(50),
-> DB_NAME varchar(255),
-> passward varchar(255),
-> Function_ON_OFF char(30)
-> );
Query OK, 0 rows affected (0.03 sec)
カラムにはvarcharなどの必ずデータ型を指定しないといけない。
参考にした簡易的なデータ型の一覧
テーブル定義の作成例
テーブルの中身を確認する。
カラムを入れただけで値は何も入っていない。
mysql> SELECT * FROM sample01;
Empty set (0.00 sec)
そこでCSVファイルをインポートする
mysql> LOAD DATA LOCAL INFILE 'transfer_dbinfo.csv'
-> INTO TABLE `sample01`
-> FIELDS TERMINATED BY '\t'
-> IGNORE 1 LINES;
Query OK, 18 rows affected, 54 warnings (0.02 sec)
Records: 18 Deleted: 0 Skipped: 0 Warnings: 54
# クエリは一行ずつ入れること。
select文を使ってインポートされているかを確認する。
mysql> SELECT * FROM sample01;
+--------------------------------+---------+----------+-----------------+
| NAME | DB_NAME | passward | Function_ON_OFF |
+--------------------------------+---------+----------+-----------------+
| 株式会社〇〇 | DB_01 | Pass_01 | 0 |
| (株)〇〇カンパニー | DB_02 | Pass_02 | 1 |
| 株式会社〇〇 | DB_03 | Pass_03 | 0 |
| (株)〇〇カンパニー | DB_04 | Pass_04 | 1 |
| 株式会社〇〇 | DB_05 | Pass_05 | 0 |
| (株)〇〇カンパニー | DB_06 | Pass_06 | 1 |
| 株式会社〇〇 | DB_07 | Pass_07 | 0 |
| (株)〇〇カンパニー | DB_08 | Pass_08 | 1 |
| 株式会社〇〇 | DB_09 | Pass_09 | 0 |
| (株)〇〇カンパニー | DB_10 | Pass_10 | 1 |
| 株式会社〇〇 | DB_11 | Pass_11 | 0 |
| (株)〇〇カンパニー | DB_12 | Pass_12 | 1 |
| 株式会社〇〇 | DB_13 | Pass_13 | 0 |
| (株)〇〇カンパニー | DB_14 | Pass_14 | 1 |
| 株式会社〇〇 | DB_15 | Pass_15 | 0 |
| (株)〇〇カンパニー | DB_16 | Pass_16 | 1 |
| 株式会社〇〇 | DB_17 | Pass_17 | 0 |
| (株)〇〇カンパニー | DB_18 | Pass_18 | 1 |
+--------------------------------+---------+----------+-----------------+
18 rows in set (0.00 sec)
RDSからCSVファイルをエクスポートする。
AWSのRDSに登録しているテーブルをエクスポートするのは通常のやり方が違うらしい。下記ドキュメント参考にしmysqldump_to_csv.pyをインストールする必要がある。
またただインストールするだけでは使用することはできない。
bashの設定ファイルにエイリアスに'python3'を設定しパスが通っているかを確認する。
参考にしたドキュメント
$ vi ~/.bashrc
alias python='python3'
export PATH="/usr/bin/$PATH"
$ source ~/.bashrc
$ python --version
Python 3.9.16
(ここに辿り着くのに時間がかかった・・)
$ mysqldump -u admin -p --host=<RDSのエンドポイント>.ap-northeast-1.rds.amazonaws.com --set-gtid-purged=OFF transfer_dbinfo sample01 | python mysqldump_to_csv.py > /home/ec2-user/table01.csv
Enter password:
# ユーザーを作成した時のパスワードを入力する。
$ ls
10_alter_user TEST01.txt data.txt mysqldump sample01.csv table01.csv
20_create_table backup.sql dbaccess.cnf mysqldump_to_csv.py sample01.txt transfer_dbinfo.csv
30_insert_data data.tar.gz dbassess.cnf mysqldump_to_csv.py.1 table.csv
[ec2-user@ip-10-0-0-9 ~]$ cat table01.csv
table01.csvがEC2に存在していることが確認できる。
$ cat table01.csv
'株式会社〇〇',DB_01,Pass_01,0
'(株)〇〇カンパニー',DB_02,Pass_02,1
'株式会社〇〇',DB_03,Pass_03,0
'(株)〇〇カンパニー',DB_04,Pass_04,1
'株式会社〇〇',DB_05,Pass_05,0
'(株)〇〇カンパニー',DB_06,Pass_06,1
'株式会社〇〇',DB_07,Pass_07,0
'(株)〇〇カンパニー',DB_08,Pass_08,1
'株式会社〇〇',DB_09,Pass_09,0
'(株)〇〇カンパニー',DB_10,Pass_10,1
'株式会社〇〇',DB_11,Pass_11,0
'(株)〇〇カンパニー',DB_12,Pass_12,1
'株式会社〇〇',DB_13,Pass_13,0
'(株)〇〇カンパニー',DB_14,Pass_14,1
'株式会社〇〇',DB_15,Pass_15,0
'(株)〇〇カンパニー',DB_16,Pass_16,1
'株式会社〇〇',DB_17,Pass_17,0
'(株)〇〇カンパニー',DB_18,Pass_18,1
中身も確認できる。exitで抜けてローカルのデスクトップに戻りscpコマンドを実行する
sh-3.2# scp -i /Users/<ユーザーネーム>/Desktop/TEST.pem ec2-user@3.114.235.30:/home/ec2-user/table01.csv /Users/<ユーザー名>/Desktop/
table01.csv 100% 792 53.2KB/s 00:00
ファイルを開いてみると文字化けしている。
右クリックして「このアプリケーションを開く」を選択する
テキストエディットで開く。
保存するときに「標準テキストのエンコーディングを日本(Shift JIS)」に変更して保存する。
もう一度開き直すと通常の文字列で表示される。
他にもこんな記事を書いています。