OPENROWSET
함수SELECT *
FROM OPENROWSET(
BULK 'https://...(생략).../*.csv',
FORMAT = 'csv',
PARSER_VERSION = '2.0'
)
WITH(
product_id INT,
product_name VARCHAR(20),
list_price DECIMAL(5,2)
) AS rows
BULK
매개변수를 사용하여 파일 경로 지정
BULK 'https://...(생략).../*.csv',
FORMAT
매개변수를 사용하여 파일 타입 지정
FORMAT = 'csv',
WITH
절을 사용하여 열 이름 및 형식 지정
WITH(...(생략)...) AS rows
SELECT
JSON_VALUE(doc, '$.product_name') AS product,
JSON_VALUE(doc, '$.list_price') AS price
FROM
OPENROWSET(
BULK 'https://.../data/files/*.json',
FORMAT = 'csv',
FIELDTERMINATOR = '0x0b',
FIELDQUOTE = '0x0b',
ROWTERMINATOR = '0x0b'
)
WITH(
doc NVARCHAR(MAX) AS rows
)
BULK
매개변수를 사용하여 파일 경로 지정
BULK 'https://.../data/files/*.json',
FORMAT
매개변수를 사용하여 파일 타입 지정
FORMAT = 'csv',
종결자를 0x0b
로 설정
WITH
절을 사용하여 단일 NVARCHAR 열 지정
WITH (doc NVARCHAR(MAX)) as rows
JSON_VALUE
함수를 사용하여 JSON 속성 지정
SELECT *
FROM OPENROWSET(
BULK 'https://.../data/orders/year=*/month=*/*.*’,
FORMAT = 'parquet’
) AS orders
WHERE
orders.filepath(1) = '2020'
AND orders.filepath(2) IN ('1','2')
BULK
매개변수를 사용하여 파일 경로 지정
BULK 'https://.../data/orders/year=*/month=*/*.*’,
FORMAT
매개변수를 사용하여 파일 타입 지정
FORMAT = 'parquet',
filepath
속성을 사용하여
파티션별로 필터링
SalesDB
서버리스 SQL 풀에서
CREATE DATABASE SalesDB
COLLATE Latin1_General_100_BIN2_UTF8;
sqlcred
외부 파일에 대한 권한 있는 엑세스 제공
CREATE DATABASE SCOPED CREDENTIAL sqlcred
WITH(
IDENTIFY = 'SHARED ACCESS SIGNATURE',
SECRET = '...(생략)...'
)
files
외부 파일 스토리지 위치에 대한 연결 캡슐화
데이터 레이크 저장소의 파일 위치에 대한 연결 정보를 캡슐화하는 외부 데이터베이스
개체는 "데이터 원본" 이다.
CREATE EXTERNAL DATA SOURCE files
WITH(
LOCATION = 'https://mydatalake.blob.core.windows.net/data/files/',
CREDENTIAL = sqlcred
)
CsvFormat
외부에 저장된 데이터의 파일 유형 및 형식 정의
CREATE EXTERNAL FILE.FORMAT CsvFormat
WITH(
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '“’
)
)
dbo.products
외부 파일 데이터에 대한 관계형 추상화
CREATE EXTERNAL TABLE dbo.products(
prd_id INT,
prd_name VARCHAR(20),
list_price DECIMAL(5,2)
)
WITH(
DATA_SOURCE = files,
LOCATION = 'products/*.csv',
FILE_FORMAT = CsvFormat
)
CREATE EXTERNAL TABLE AS SELECT
(CETAS
) 문CREATE EXTERNAL TABLE SpecialOrders
WITH(
--details for storing results
LOCATION = 'special_orders/',
DATA_SOURCE = files,
FILE_FORMAT = ParquetFormat
) AS
SELECT
OrderID, CustomerName, OrderTotal
FROM OPENROWSET(
-- details for reading source files
BULK 'sales_orders/*.csv',
DATA_SOURCE = 'files',
FORMAT = 'csv',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS source_data
WHERE OrderType = 'Special Order'