[DATABASE] Hướng dẫn sử dụng cURL Rest Api json trong sql server
Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng cURL Rest Api sql từ Website trực tiếp trong Sqlserver. Từ phiên bản Microsoft Sqlserver 2016, Microsoft SQL đã tích hợp mạnh mẽ cho chúng ta các hàm làm việc với Json trong Sql . ...
Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng cURL Rest Api sql từ Website trực tiếp trong Sqlserver.
Từ phiên bản Microsoft Sqlserver 2016, Microsoft SQL đã tích hợp mạnh mẽ cho chúng ta các hàm làm việc với Json trong Sql.
VD: các bạn có một yêu cầu như sau.
Có một trang web cung cấp API cho chúng ta các kết quả trực tiếp bóng đá livescores, và chúng ta muốn đọc dữ liệu từ API này và chèn dữ liệu trực tiếp xuống cơ sở dữ liệu Sql.
Bình thường, chúng ta sẽ dùng một ứng dụng ví dụ như C# hay VB.NET để sử dụng HttpRequest hay Webclient để lấy dữ liệu API từ website đó về xong, rồi tiếp tục insert xuống database.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách đọc dữ liệu json trực tiếp từ website về sql.
Demo ví dụ:
Mình có đường dẫn URL trả về API json như sau:
http://127.0.0.1/HOBWEB/android_api/test_api
Và dưới đây là câu lệnh mình đọc Sql trực tiếp về:
DECLARE @json NVARCHAR(MAX) SET @json = curl.xget(null, 'http://127.0.0.1/HOBWEB/android_api/test_api') select * from openjson(@json) WITH (po nvarchar(255) 'strict $.madh_gop', mamh nvarchar(50) '$.mamh', mact nvarchar(50) '$.mact')
=> Kết quả như hình bên dưới:
Các bước thực hiện:
Đầu tiên, các cần download file SqlClrCurl.dll ở cuối bài viết về.
Bước 1: Bật CLR assemblie lên
sp_configure @configname=clr_enabled, @configvalue=1 GO RECONFIGURE GO
Bước 2: Tiếp tục thực hiện câu lệnh sau.
USE database_name GO EXEC sp_changedbowner 'sa' ALTER DATABASE database_name SET TRUSTWORTHY ON
Bước 3: Tạo Assemblie và hai function Post và Get
--Create the assembly CREATE ASSEMBLY SqlClrCurl FROM 'C:GitHubsql-server-samplessamplesfeaturessql-clrCurlinReleaseSqlClrCurl.dll' WITH PERMISSION_SET = EXTERNAL_ACCESS; GO CREATE SCHEMA CURL; GO --Create the function/procedure CREATE FUNCTION CURL.XGET (@H NVARCHAR(MAX), @url NVARCHAR(4000)) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME SqlClrCurl.Curl.Get; GO CREATE PROCEDURE CURL.XPOST (@H NVARCHAR(MAX), @d NVARCHAR(MAX), @url NVARCHAR(4000)) AS EXTERNAL NAME SqlClrCurl.Curl.Post; GO
Sau khi, thực hiện xong, các bạn có thể bắt đầu sử dụng:
1. Sử dụng làm CURL.XGET
select curl.xget(null, 'https://api.iextrading.com/1.0/stock/msft/earnings')
2. Sử dụng hàm CURL.XPOST
declare @hkey nvarchar(200) = N'aeg-sas-key: 9CwFFHbPIwTPVEdXS+W7eMnuPk1/+pouIlhzf5='; declare @body nvarchar(4000) = N'[{"id":"1807","eventType":"recordInserted","subject":"myapp/vehicles/motorcycles","eventTime": "2017-08-10T21:03:07+00:00","data": {"make": "Ducati","model":"Monster"},"dataVersion":"1.0","metadataVersion":"1"}]'; declare @endpoint nvarchar(1000) = N'https://test-event-grid.eventgrid.azure.net/api/events'; exec curl.XPOST @H = @hkey, @d = @body, @url = @endpoint;
Lưu ý: Nếu bạn thực hiện không thành công, nhớ kiểm tra tắt tường lửa Firewall xem sao nhé.
CHÚC CÁC BẠN THÀNH CÔNG!
DOWNLOAD SOURCE