sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan rettes "Et korrelationsnavn skal angives for bulk-rækkesættet i fra-klausulen." i SQL Server

Hvis du støder på fejlmeddelelse 491, niveau 16 "Et korrelationsnavn skal angives for bulk-rækkesættet i fra-klausulen" i SQL Server, er det sandsynligvis fordi du forsøger at læse en fil uden at bruge et korrelationsnavn.

Når du bruger OPENROWSET() funktion med BULK mulighed, skal du angive et korrelationsnavn (også kendt som en intervalvariabel eller et alias) i FROM klausul.

For at rette denne fejl skal du blot angive et korrelationsnavn/alias for din forespørgsel.

Eksempel på fejlen

Her er et eksempel på kode, der forårsager denne fejl.

SELECT BulkColumn FROM OPENROWSET (
    BULK '/var/opt/mssql/bak/pets.json', 
    SINGLE_CLOB
    );

Resultat:

Msg 491, Level 16, State 1, Line 4
A correlation name must be specified for the bulk rowset in the from clause.

Fejlen opstod, fordi jeg glemte at inkludere korrelationsnavnet.

Løsningen

Som nævnt, for at løse dette problem, er alt, hvad vi skal gøre, at angive et korrelationsnavn (også kendt som en intervalvariabel eller alias).

SELECT BulkColumn FROM OPENROWSET (
    BULK '/var/opt/mssql/bak/pets.json', 
    SINGLE_CLOB
    ) AS MyAlias;

Resultat:

+--------------+
| BulkColumn   |
|--------------|
| { 
    "pets" : {
            "cats" : [
            { "id" : 1, "name" : "Fluffy", "sex" : "Female" },
            { "id" : 2, "name" : "Long Tail", "sex" : "Female" },
            { "id" : 3, "name" : "Scratch", "sex" : "Male" }
        ],
            "dogs" : [
            { "id" : 1, "name" : "Fetch", "sex" : "Male" },
            { "id" : 2, "name" : "Fluffy", "sex" : "Male" },
            { "id" : 3, "name" : "Wag", "sex" : "Female" }
        ]
    }
}              |
+--------------+

  1. Hvordan håndterer man fejl for duplikerede poster?

  2. Hvordan gentager jeg et ressource-id #6 fra et MySql-svar i PHP?

  3. Tilføjelse af dict-objekt til postgresql

  4. SQL Server 2008 række Indsæt og opdater tidsstempler