1+
2+ DROP VIEW IF EXISTS parquet .NYCTaxi
3+ GO
4+ DROP VIEW IF EXISTS json .Books
5+ GO
6+ DROP VIEW IF EXISTS csv .NYCTaxi
7+ GO
8+ IF (EXISTS (SELECT * FROM sys .external_tables WHERE name = ' Population' )) BEGIN
9+ DROP EXTERNAL TABLE csv .Population
10+ END
11+ IF (EXISTS (SELECT * FROM sys .external_file_formats WHERE name = ' QuotedCsvWithHeader' )) BEGIN
12+ DROP EXTERNAL FILE FORMAT QuotedCsvWithHeader
13+ END
14+ GO
15+ DROP SCHEMA IF EXISTS parquet ;
16+ GO
17+ DROP SCHEMA IF EXISTS csv;
18+ GO
19+ DROP SCHEMA IF EXISTS json ;
20+ GO
21+
22+ IF (EXISTS (SELECT * FROM sys .external_data_sources WHERE name = ' SqlOnDemandDemo' )) BEGIN
23+ DROP EXTERNAL DATA SOURCE SqlOnDemandDemo
24+ END
25+
26+
27+ IF (EXISTS (SELECT * FROM sys .external_data_sources WHERE name = ' SqlOnDemandDemo' )) BEGIN
28+ DROP EXTERNAL DATA SOURCE SqlOnDemandDemo
29+ END
30+
31+
32+ IF EXISTS
33+ (SELECT * FROM sys .credentials
34+ WHERE name = ' https://sqlondemandstorage.blob.core.windows.net' )
35+ DROP CREDENTIAL [https://sqlondemandstorage.blob.core.windows.net]
36+ GO
37+
38+
39+ -- create credentials for the containers in demo storage account
40+ CREATE CREDENTIAL [https://sqlondemandstorage.blob.core.windows.net]
41+ WITH IDENTITY = ' SHARED ACCESS SIGNATURE' ,
42+ SECRET = ' sv=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%3D'
43+ GO
44+
45+ CREATE SCHEMA parquet ;
46+ GO
47+ CREATE SCHEMA csv;
48+ GO
49+ CREATE SCHEMA json ;
50+ GO
51+
52+ -- create sample external table
53+ CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
54+ LOCATION = ' https://sqlondemandstorage.blob.core.windows.net'
55+ );
56+ GO
57+
58+ CREATE EXTERNAL FILE FORMAT QuotedCsvWithHeader
59+ WITH (
60+ FORMAT_TYPE = DELIMITEDTEXT ,
61+ FORMAT_OPTIONS (
62+ FIELD_TERMINATOR = ' ,' ,
63+ STRING_DELIMITER = ' "' ,
64+ FIRST_ROW = 2
65+ )
66+ );
67+ GO
68+
69+ CREATE EXTERNAL TABLE csv .population
70+ (
71+ [country_code] VARCHAR (5 ) COLLATE Latin1_General_BIN2,
72+ [country_name] VARCHAR (100 ) COLLATE Latin1_General_BIN2,
73+ [year] smallint ,
74+ [population] bigint
75+ )
76+ WITH (
77+ LOCATION = ' csv/population/population.csv' ,
78+ DATA_SOURCE = SqlOnDemandDemo,
79+ FILE_FORMAT = QuotedCsvWithHeader
80+ );
81+ GO
82+
83+ CREATE VIEW parquet .NYCTaxi
84+ AS SELECT * , nyc .filepath (1 ) AS [year], nyc .filepath (2 ) AS [month]
85+ FROM
86+ OPENROWSET (
87+ BULK ' https://sqlondemandstorage.blob.core.windows.net/parquet/taxi/year=*/month=*/*.parquet' ,
88+ FORMAT = ' PARQUET'
89+ ) AS nyc
90+ GO
91+
92+ CREATE VIEW csv .NYCTaxi
93+ AS
94+ SELECT * , nyc .filepath (1 ) AS [year], nyc .filepath (2 ) AS [month]
95+ FROM OPENROWSET (
96+ BULK ' https://sqlondemandstorage.blob.core.windows.net/csv/taxi/yellow_tripdata_*-*.csv' ,
97+ FORMAT = ' CSV' ,
98+ FIRSTROW = 2
99+ )
100+ WITH (
101+ vendor_id VARCHAR (100 ) COLLATE Latin1_General_BIN2,
102+ pickup_datetime DATETIME2 ,
103+ dropoff_datetime DATETIME2 ,
104+ passenger_count INT ,
105+ trip_distance FLOAT ,
106+ rate_code INT ,
107+ store_and_fwd_flag VARCHAR (100 ) COLLATE Latin1_General_BIN2,
108+ pickup_location_id INT ,
109+ dropoff_location_id INT ,
110+ payment_type INT ,
111+ fare_amount FLOAT ,
112+ extra FLOAT ,
113+ mta_tax FLOAT ,
114+ tip_amount FLOAT ,
115+ tolls_amount FLOAT ,
116+ improvement_surcharge FLOAT ,
117+ total_amount FLOAT
118+ ) AS nyc
119+ GO
120+
121+ CREATE VIEW json .Books
122+ AS SELECT *
123+ FROM
124+ OPENROWSET (
125+ BULK ' https://sqlondemandstorage.blob.core.windows.net/json/books/*.json' ,
126+ FORMAT = ' CSV' ,
127+ FIELDTERMINATOR = ' 0x0b' ,
128+ FIELDQUOTE = ' 0x0b' ,
129+ ROWTERMINATOR = ' 0x0b'
130+ )
131+ WITH (
132+ content varchar (8000 )
133+ ) AS books;
0 commit comments