はじめに
サンプルコード
- 下記のコードはCSVファイルを1件つづ読み込んで1件ごと登録している
const fs = require('fs');
const csv = require('csv');
const db = require('../models/index')
### 都道府県の登録
fs.createReadStream(__dirname + '/../csv/pref.csv').pipe(csv.parse(function(err, data) {
data.forEach(element => {
db.prefs.create({
pref_cd: element[0],
pref_name: element[1]
})
});
}));
### 企業情報の登録
fs.createReadStream(__dirname + '/../csv/companies.csv').pipe(csv.parse(function(err, data) {
data.forEach(element => {
db.companies.create({
id: element[0],
company_cd: element[1],
rr_cd: element[2],
company_name: element[3],
company_name_k: element[4],
company_name_h: element[5],
company_name_r: element[6],
comany_url: element[7],
company_type: element[8],
e_status: element[9],
e_sort: element[10]
})
});
}));
sequelizeでbulkCreateを使った場合
- CSVファイルを読み込んで1件づつ登録していたらパフォーマンスがわるいので,bulkCreateメソッドを利用してbulkInsert処理を実装する
/// Location情報の登録
insertDate = []
fs.createReadStream(__dirname + '/../csv/line20200619free.csv').pipe(csv.parse(function(err, data) {
data.forEach(element => {
insertDate.push(
{
line_cd: element[0],
company_cd: element[1],
line_name: element[2],
line_name_k: element[3],
line_name_h: element[4],
line_color_c: element[5],
line_color_t: element[6],
lon: element[8],
lat: element[9],
zoom: element[10],
e_status: element[11],
e_sort: element[12]
}
)
});
db.lines.bulkCreate(insertDate)
}));
/// Station情報の登録
insertDate = []
fs.createReadStream(__dirname + '/../csv/station20200619free.csv').pipe(csv.parse(function(err, data) {
data.forEach(element => {
insertDate.push(
{
station_cd: element[0],
station_g_cd: element[1],
station_name: element[2],
station_name_k: element[3],
station_name_r: element[4],
line_cd: element[5],
pref_cd: element[6],
post: element[7],
address: element[8],
lon: element[9],
lat: element[10],
open_ymd: element[11],
close_ymd: element[12],
e_status: element[13],
e_sort: element[14]
}
)
});
db.stations.bulkCreate(insertDate)
}));
## 接続駅マスタの登録
insertDate = []
fs.createReadStream(__dirname + '/../csv/join20200619.csv').pipe(csv.parse(function(err, data) {
data.forEach(element => {
insertDate.push(
{
line_cd: element[0],
station_cd1: element[1],
station_cd2: element[2],
}
)
});
db.joins.bulkCreate(insertDate)
}));
blog.kozakana.net