2016-05-09 20 views
1

Ich versuche, Node-Mssql-Abfrage ausführen, wenn ich einfache Abfragen ausgeführt wird es ausgeführt wird. Aber wenn ich OPENROWSET und Microsoft.ACE.OLEDB.12.0 verwende, zeigt es einige Fehler an.Fehler beim Ausführen von Node-Mssql-Abfrage

Hier ist server.js Code

var express = require('express'); 
var app = express(); 
app.get('/', function (req, res) { 

var sql = require("mssql"); 

// config for your database 
var config = { 
    user: '..', 
    password: '....', 
    server: 'localhost\\SQLEXPRESS', 
    database: 'test_databasae' 
}; 

// connect to your database 
sql.connect(config, function (err) { 

    if (err) 
     console.log(err); 
    else 
     console.log("Connection successful"); 


    // create Request object 
    var request = new sql.Request(); 

    // query to the database and get the records 
    /*request.query('select * from table1', function (err, recordset) { 

     if (err) console.log(err) 

     // send records as a response 
     res.send(recordset); 

    });*/ 
    request.query('INSERT INTO [mytable](SalesPersonID,TerritoryID)' + 
        'SELECT SalesPersonID,TerritoryID FROM OPENROWSET(' + 
        '\'Microsoft.ACE.OLEDB.12.0\',\'Excel 12.0\';\'Database=D:\\sample\\test\\data\\1540_OPENROWSET_Examples.xls;,\'' + 
        'SELECT SalesPersonID, TerritoryID FROM [SELECT_Example$])',function(err,recordset){ 
     if(err) console.log(err) 

     console.log("success"); 
    }); 
});});var server = app.listen(5000, function() { 
console.log('Server is running..');});` 

und wenn ich getroffen Knoten server.js auf Eingabeaufforderung ich folgende Fehler auf Eingabeaufforderung bin immer:

Server is running.. 
Connection successful 
{ [RequestError: Incorrect syntax near ')'.] 
    name: 'RequestError', 
    message: 'Incorrect syntax near \')\'.', 
    code: 'EREQUEST', 
    number: 102, 
    lineNumber: 1, 
    state: 1, 
    class: 15, 
    serverName: 'localhost\\SQLEXPRESS', 
    procName: '', 
    precedingErrors: 
    [ { [RequestError: Incorrect syntax near the keyword 'SELECT'.] 
     name: 'RequestError', 
     message: 'Incorrect syntax near the keyword \'SELECT\'.', 
     code: 'EREQUEST', 
     number: 156, 
     lineNumber: 1, 
     state: 1, 
     class: 15, 
     serverName: 'localhost\\SQLEXPRESS', 
     procName: '' } ] } 
success 

der gleichen Die Abfrage wird in SQL Server Management Studio ausgeführt. Sie fügt Excel-Daten erfolgreich in die Datenbank ein. Die Excel-Blattdaten sehen folgendermaßen aus:

SalesPersonID TerritoryID 
--------  ----------- 
275    2 
276    4 
277    3 

Here is the plunker link

+0

Können Sie überprüfen, gibt es einen Syntaxfehler am Ende der Zeile '1540_OPENROWSET_Examples.xls; \‚‘'. Ich meine das Komma muss nach dem '\ ''' platziert werden? – Arulkumar

+0

Hallo, danke für die Antwort. Ich versuchte, wie Sie sagten, es zeigt immer noch – naik3

+0

'{[RequestError: Falsche Syntax in der Nähe ')].] Name:' RequestError ', Nachricht:' Falsche Syntax in der Nähe \ ') \'. ', code:' eRequest‘, Zahl: 102, Zeilennummer: 1, Zustand: 1, Klasse: 15, server~~POS=TRUNC: 'localhost \\ SQLEXPRESS', procName: '', precedingErrors: [{[Request: falsche Syntax nahe ','.] Name: 'RequestError', Nachricht: 'Falsche Syntax in der Nähe von \', \ '.‘, Code: 'eRequest', Nummer: 102, Zeilennummer: 1, Zustand: 1, Klasse: 15, -serverName: 'localhost \\ SQLEXPRESS', procName: ''}]}' – naik3

Antwort

1

Ich sehe einige Syntaxfehler in Ihrem Code:

Beispielcode für OPENROWSET ist:

FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=D:\testing.xlsx;HDR=YES', 'SELECT * FROM [Sheet1$]') 
  1. In Ihrem Code zusätzliche ' zwischen dem Excel und Database Schlüsselwörter ,\'Excel 12.0\';\'Database=D:\\sample ..., die korrigiert werden müssen

  2. Die SELECT SalesPersonID, TerritoryID FROM [SELECT_Example$] benötigen ' vor und nach.

So wird Ihre Arbeits Code sein:

request.query('INSERT INTO [mytable](SalesPersonID, TerritoryID)' + 
       ' SELECT SalesPersonID, TerritoryID FROM OPENROWSET(' + 
       '\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;Database=D:\\sample\\test\\data\\1540_OPENROWSET_Examples.xls;HDR=YES\', ' + 
       '\'SELECT SalesPersonID, TerritoryID FROM [SELECT_Example$]\')',function(err,recordset){ 
    if(err) console.log(err) 

Update:

Die OP diese Konfigurationsfehler erhalten:

The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error.

th zu beheben e-Konfigurationsfehler, müssen die folgenden Skript ausführen, um:

USE [master] 
GO 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
GO 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO 
+0

Thank Sie sehr viel für Ihre Antwort .. Ich werde jetzt versuchen – naik3

+0

Vielen Dank ... Code funktioniert ohne Syntaxfehler .. danke. – naik3

+0

Es gibt jedoch einige Konfigurationsfehler: Der OLE DB-Provider "Microsoft.ACE.OLEDB.12.0" für den Verbindungsserver "(null)" meldete einen Fehler. – naik3