Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ebben a cikkben megismerheti, hogyan kérdezhet le bizonyos fájlokat vagy mappákat metaadatok használatával. A kiszolgáló nélküli SQL-készlet több fájlt és mappát is kezelhet. További információ: Lekérdezési mappák és több fájl.
Előfordulhat, hogy tudnia kell, hogy melyik fájl vagy mappaforrás egy adott sorhoz kapcsolódik egy eredményhalmazban. Használhatja a függvényeket filepath , és filename visszaadhatja a fájlneveket és/vagy az eredményhalmaz elérési útját, vagy a fájlnév vagy mappa elérési útja alapján szűrheti az adatokat. These functions are described in filename function and filepath function.
A következő szakaszok rövid leírásokat és kódmintákat nyújtanak.
Előfeltételek
Első lépésként hozzon létre egy adatbázist egy tárfiókra hivatkozó adatforrással. Ezután inicializálja az objektumokat egy beállítási szkript végrehajtásával az adatbázisban. Ez a beállítási szkript létrehozza az ezekben a mintákban használt adatforrásokat, adatbázis-hatókörű hitelesítő adatokat és külső fájlformátumokat.
Functions
Filename
A filename függvény azt a fájlnevet adja vissza, amelyből a sor származik.
Az alábbi minta beolvassa a 2017. szeptemberi NYC Yellow Taxi-adatfájlokat, és visszaadja az egy fájlra eső utazások számát. A OPENROWSET lekérdezés része határozza meg, hogy mely fájlok legyenek olvashatók.
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) nyc
GROUP BY nyc.filename();
Az alábbi példa bemutatja, hogyan filename() használható a WHERE záradékban az olvasandó fájlok szűrésére. Hozzáfér a teljes mappához a lekérdezés OPENROWSET részében, és szűri a fájlokat a WHERE záradékában.
Az eredmények megegyeznek az előző példával.
SELECT
r.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2)
WITH (C1 varchar(200) ) AS [r]
WHERE
r.filename() IN ('yellow_tripdata_2017-10.csv', 'yellow_tripdata_2017-11.csv', 'yellow_tripdata_2017-12.csv')
GROUP BY
r.filename()
ORDER BY
[filename];
Fájlútvonal
A filepath függvény egy teljes vagy részleges elérési utat ad vissza:
- Paraméter nélkül hívva a teljes fájl elérési útját adja vissza, ahonnan a sor származik. Amikor
DATA_SOURCE-t használnakOPENROWSET-ben, az aDATA_SOURCE-hez viszonyított elérési utat adja vissza. - Ha paraméterrel hívjuk meg, az az elérési út azon részét adja vissza, amely megfelel a paraméterben megadott pozíció helyettesítő karakterének. Például, a 1 paraméterérték az elérési út azon részét adja vissza, amely az első helyettesítő karakterhez illeszkedik.
Az alábbi minta NYC Yellow Taxi-adatfájlokat olvassa be a 2017 utolsó három hónapjára vonatkozóan. It returns the number of rides per file path. A OPENROWSET lekérdezés része határozza meg, hogy mely fájlok legyenek olvashatók.
SELECT
r.filepath() AS filepath
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-1*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
GROUP BY
r.filepath()
ORDER BY
filepath;
Az alábbi példa bemutatja, hogyan filepath() használható a WHERE záradékban az olvasandó fájlok szűrésére.
Használhatja a helyettesítő karaktereket a OPENROWSET lekérdezésben, és szűrheti a záradékban lévő WHERE fájlokat. Az eredmények megegyeznek az előző példával.
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_*-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;