サンプルデータベースのインポート
TiDBマニュアルで使用されている例は、 CapitalBikeshareデータライセンス契約の下でリリースされたCapitalBikeshareのシステムデータを使用しています。
すべてのデータファイルをダウンロードする
システムデータは、1年に.zipファイルでダウンロードする整理して入手できます。すべてのファイルをダウンロードして抽出するには、約3GBのディスク容量が必要です。 bashスクリプトを使用して2010〜2017年のすべてのファイルをダウンロードするには:
mkdir -p bikeshare-data && cd bikeshare-data
curl -L --remote-name-all https://s3.amazonaws.com/capitalbikeshare-data/{2010..2017}-capitalbikeshare-tripdata.zip
unzip \*-tripdata.zip
TiDBにデータをロードする
システムデータは、次のスキーマを使用してTiDBにインポートできます。
CREATE DATABASE bikeshare;
USE bikeshare;
CREATE TABLE trips (
trip_id bigint NOT NULL PRIMARY KEY AUTO_INCREMENT,
duration integer not null,
start_date datetime,
end_date datetime,
start_station_number integer,
start_station varchar(255),
end_station_number integer,
end_station varchar(255),
bike_number varchar(255),
member_type varchar(255)
);
ここで例LOAD DATA
のコマンドを使用してファイルを個別にインポートするか、以下のbashループを使用してすべてのファイルをインポートできます。
SET tidb_dml_batch_size = 20000;
LOAD DATA LOCAL INFILE '2017Q1-capitalbikeshare-tripdata.csv' INTO TABLE trips
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(duration, start_date, end_date, start_station_number, start_station,
end_station_number, end_station, bike_number, member_type);
すべてのファイルをインポートする
ノート:
MySQLクライアントを起動するときは、
--local-infile=1
オプションを使用します。
*.csv
のファイルすべてをbashループでTiDBにインポートするには:
for FILE in *.csv; do
echo "== $FILE =="
mysql bikeshare --local-infile=1 -e "SET tidb_dml_batch_size = 20000; LOAD DATA LOCAL INFILE '${FILE}' INTO TABLE trips FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (duration, start_date, end_date, start_station_number, start_station, end_station_number, end_station, bike_number, member_type);"
done;