✨
MySQL queryStream NodeJS
の内容が古い
queryStreamの内容がそもそも記載が無いので、MariaDBを参考に自作
queryStreamは1レコード単位で内容を取得する
長時間接続する羽目になるなら、connectionPoolなど考える必要がある
const mysql = require("promise-mysql");
async function MySQL_queryStream( _CONF ) {
let connection = await mysql.createConnection( _CONF)
console.info("connection.start")
try {
onst _SQL = `SELECT * From <TABLE> Limit 10`
await getRowData(connection, _SQL).then(()=>{
Promise.resolve(null);
});
} catch (error) {
console.error('ERR! MySQL_queryStream ->',error);
Promise.reject()
}finally{
await connection.end()
.then(() =>{
console.info("connection.end")
})
}
}
async function getRowData(_CONNECTION, _SQL) {
console.log("getRowData _SQL -> ", _SQL);
let RowCount = 0;
let _QUERY = _CONNECTION.queryStream(_SQL);
_QUERY
.on('error', function(_err) {
console.log("Err getRowData: ", _err);
throw _err;
})
.on('result', function(_row) {
_CONNECTION.pause();
RowCount++;
//下記2行を出力すると速度は落ちる。動作確認できたら消す方が良い
console.log("RowCount: ", RowCount);
console.log("_row: ", _row);
_CONNECTION.resume();
})
.on('end', function() {
console.log("getRowData >>> end");
});
}
Discussion