74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
/**
|
|
* SQL Server 通用执行脚本
|
|
* 用法: node sql_exec.js "你的SQL语句"
|
|
* 或者: node sql_exec.js -f sql文件路径
|
|
*/
|
|
|
|
const sql = require('mssql');
|
|
const fs = require('fs');
|
|
|
|
const config = {
|
|
server: '192.168.195.15',
|
|
port: 1433,
|
|
user: 'sa',
|
|
password: 'Dbt@com@123',
|
|
database: 'honey_box',
|
|
options: {
|
|
encrypt: false,
|
|
trustServerCertificate: true
|
|
}
|
|
};
|
|
|
|
async function executeSQL(query) {
|
|
let pool = null;
|
|
try {
|
|
pool = await sql.connect(config);
|
|
console.log('✅ 连接成功\n');
|
|
|
|
const result = await pool.request().query(query);
|
|
|
|
// 显示结果
|
|
if (result.recordset && result.recordset.length > 0) {
|
|
console.log(`返回 ${result.recordset.length} 条记录:\n`);
|
|
console.table(result.recordset);
|
|
} else if (result.rowsAffected) {
|
|
console.log(`✅ 执行成功,影响行数: ${result.rowsAffected.join(', ')}`);
|
|
} else {
|
|
console.log('✅ 执行成功');
|
|
}
|
|
|
|
return result;
|
|
} catch (err) {
|
|
console.error('❌ 执行失败:', err.message);
|
|
throw err;
|
|
} finally {
|
|
if (pool) await pool.close();
|
|
}
|
|
}
|
|
|
|
async function main() {
|
|
const args = process.argv.slice(2);
|
|
|
|
if (args.length === 0) {
|
|
console.log('用法:');
|
|
console.log(' node sql_exec.js "SELECT * FROM users"');
|
|
console.log(' node sql_exec.js -f script.sql');
|
|
process.exit(1);
|
|
}
|
|
|
|
let query;
|
|
if (args[0] === '-f' && args[1]) {
|
|
// 从文件读取SQL
|
|
query = fs.readFileSync(args[1], 'utf8');
|
|
console.log(`执行文件: ${args[1]}\n`);
|
|
} else {
|
|
// 直接执行SQL
|
|
query = args.join(' ');
|
|
}
|
|
|
|
console.log('SQL:', query.substring(0, 200) + (query.length > 200 ? '...' : ''), '\n');
|
|
await executeSQL(query);
|
|
}
|
|
|
|
main();
|