- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google 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!