sql >> Databáze >  >> RDS >> Sqlserver

Jak opravit "Pro hromadnou sadu řádků v klauzuli from musí být zadán název korelace." v SQL Server

Pokud narazíte na chybu Msg 491, Level 16 „Pro hromadnou sadu řádků v klauzuli from musí být zadán název korelace“, je to pravděpodobně proto, že se pokoušíte číst soubor bez použití názvu korelace.

Když použijete OPENROWSET() funkce s BULK musíte zadat název korelace (známý také jako proměnná rozsahu nebo alias) v FROM doložka.

Chcete-li tuto chybu opravit, jednoduše zadejte název/alias korelace pro váš dotaz.

Příklad chyby

Zde je příklad kódu, který tuto chybu způsobuje.

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

Výsledek:

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

K chybě došlo, protože jsem zapomněl uvést název korelace.

Řešení

Jak již bylo zmíněno, k vyřešení tohoto problému stačí zadat název korelace (známý také jako proměnná rozsahu nebo alias).

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

Výsledek:

+--------------+
| 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. Existuje způsob, jak zobrazit klauzuli WHERE pouze pro jedno pole v MySQL?

  2. Jak opravit výstrahu Security Advisor MySQL

  3. Jak optimalizovat použití klauzule OR při použití s ​​parametry (SQL Server 2008)

  4. Zvyšte hodnotu v Postgresu