- [C#] Dependency Injection in Winform
- [SQLSERVER] Hướng dẫn tìm kiếm nâng cao trên sql
- [C#] Hướng dẫn sử dụng SetTimeOut trên Winform like Javascript
- [DATABASE] In cây thông noel bằng sqlserver
- [C#] Hướng dẫn fix lỗi hiển thị UTF-8 khi sử dụng WebClient Download String
- [DATABASE] Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES 256 trên sqlserver
- [DATABASE] Base64 Encode and Decode trong Sqlserver
- [C#] Vì Mẹ anh bắt phải Fake địa chỉ MacAddress
- [C#] Hướng dẫn xuất dữ liệu từ DataGridview ra file Excel
- [C#] Hướng dẫn khởi động lại chương trình ứng dụng winform
- [C#] Sự khác nhau giữa String.IsNullOrEmpty và String.IsNullOrWhiteSpace
- [C#] Hướng dẫn đọc file hình ảnh định dạng WEBP và chuyển đổi WebP sang JPG
- [C#] Kiểm tra phiên bản Microsoft Office đang sử dụng trên máy tính
- [C#] Hướng dẫn chuyển đổi tập tin hình ảnh XPS sang Bitmap
- [C#] Giới thiệu Component WebView2 của Microsoft
- [C#] Hướng dẫn lưu tất cả hình ảnh từ File Excel vào thư mục window
- [DATABASE] Hướng dẫn import và export hình ảnh image từ Sqlserver
- [DATABASE] Hướng dẫn sử dụng Hàm ASCII trong sqlserver
- [C#] Hướng dẫn fix lỗi Visual Studio 2022 not Support Target Net Framework 4.5.2
- [C#] Giới thiệu thư viện Sunny UI thiết kế giao diện trên Winform
[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.
[DATABASE] cURL Rest Api Json sql server
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:\GitHub\sql-server-samples\samples\features\sql-clr\Curl\bin\Release\SqlClrCurl.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!