nodejs mmsql 批量插入到临时 table
nodejs mmsql bulk insert to temp table
我正在使用 mssql 通过 node.js 连接到 sql 服务器 2012。我在 docs
中发现了批量插入选项
我想将数据插入临时文件 table,文档说我可以这样做。这是我正在尝试的:
createConnection(config.dbConfig);
var table = new sql.Table('#atable');
table.create = true;
table.columns.add('a', sql.Int, { nullable: false});
table.rows.add(1);
table.rows.add(2);
table.rows.add(3);
var request = new sql.Request();
request.bulk(table, function(err, rowCount){
if(err){
console.log('bulk insert error');
console.log(err);
}
var taco = new sql.Request();
taco.query('select * from #atable', function(err, recordset){
if(err){
console.log('taco error:' + err);
}
console.log('taco recordset:');
console.log(recordset);
});
});
我得到这个输出:
taco error:RequestError: Invalid object name '#atable'.
如果我删除哈希,它会在服务器上创建一个真正的 table。我找不到任何实际使用临时 table 的示例。我想知道如何做到这一点。如果没有,那么我将不得不采取另一种方法
我切换到常规 sql 语句来创建临时 table,然后尝试查询它。我意识到 new sql.Request
是我的大部分问题。临时 table 在另一个 connection/request/thread 上不存在。
所以这是我的解决方案:
var table = new sql.Table('#atable');
table.create = true;
table.columns.add('a', sql.Int, { nullable: false});
table.rows.add(1);
table.rows.add(2);
table.rows.add(3);
var request = new sql.Request();
request.bulk(table, function(err, rowCount){
if(err){
console.log('bulk insert error');
console.log(err);
return;
}
request.query('select * from #atable', function(err, recordset){
if(err){
console.log('taco error:' + err);
return;
}
console.log('taco recordset:');
console.log(recordset);
});
});
这是一个微妙的变化。在 request.bulk 调用中,我使用相同的请求对象(巧妙命名的请求)来查询 table。我没有创建新的连接对象,所以我没有意识到我正在使用 table 不存在的连接。
我正在使用 mssql 通过 node.js 连接到 sql 服务器 2012。我在 docs
中发现了批量插入选项我想将数据插入临时文件 table,文档说我可以这样做。这是我正在尝试的:
createConnection(config.dbConfig);
var table = new sql.Table('#atable');
table.create = true;
table.columns.add('a', sql.Int, { nullable: false});
table.rows.add(1);
table.rows.add(2);
table.rows.add(3);
var request = new sql.Request();
request.bulk(table, function(err, rowCount){
if(err){
console.log('bulk insert error');
console.log(err);
}
var taco = new sql.Request();
taco.query('select * from #atable', function(err, recordset){
if(err){
console.log('taco error:' + err);
}
console.log('taco recordset:');
console.log(recordset);
});
});
我得到这个输出:
taco error:RequestError: Invalid object name '#atable'.
如果我删除哈希,它会在服务器上创建一个真正的 table。我找不到任何实际使用临时 table 的示例。我想知道如何做到这一点。如果没有,那么我将不得不采取另一种方法
我切换到常规 sql 语句来创建临时 table,然后尝试查询它。我意识到 new sql.Request
是我的大部分问题。临时 table 在另一个 connection/request/thread 上不存在。
所以这是我的解决方案:
var table = new sql.Table('#atable');
table.create = true;
table.columns.add('a', sql.Int, { nullable: false});
table.rows.add(1);
table.rows.add(2);
table.rows.add(3);
var request = new sql.Request();
request.bulk(table, function(err, rowCount){
if(err){
console.log('bulk insert error');
console.log(err);
return;
}
request.query('select * from #atable', function(err, recordset){
if(err){
console.log('taco error:' + err);
return;
}
console.log('taco recordset:');
console.log(recordset);
});
});
这是一个微妙的变化。在 request.bulk 调用中,我使用相同的请求对象(巧妙命名的请求)来查询 table。我没有创建新的连接对象,所以我没有意识到我正在使用 table 不存在的连接。