Cách làm việc với XML và SQL trong n8n

Dù bạn là coder lâu năm hay mới nhập môn, bạn có lẽ đều nhận thức rõ về tầm quan trọng của việc migrate dữ liệu. Trong khi JSON có thể là định dạng yêu thích trong các dịch vụ web, các ngành như tài chính và y tế vẫn dựa nhiều vào XML. Do đó, khả năng chuyển đổi từ SQL sang XML và ngược lại là một kỹ năng quan trọng trong môi trường doanh nghiệp. Bài toán này có thể được giải quyết bằng N8n
Trong hướng dẫn toàn diện này, chúng tôi sẽ đi sâu vào các phức tạp của việc làm việc với XML và SQL bằng sức mạnh của n8n, một công cụ tự động hóa quy trình làm việc. Chúng tôi sẽ hướng dẫn bạn qua từng bước của quá trình:
- Cách xuất dữ liệu SQL ra định dạng XML;
- Cách nhập lại tệp XML vào bảng SQL;
- Chúng tôi sẽ điểm qua các phương pháp khác nhau để gửi tệp XML;
- Và cuối cùng, cách trình bày dữ liệu XML một cách trực quan hấp dẫn.
Hướng dẫn toàn diện này nhằm cung cấp một phương tiếp cận thống nhất, không phụ thuộc nền tảng để chuyển đổi dữ liệu SQL sang XML, loại bỏ nhu cầu sử dụng cú pháp SQL đặc thù từng nền tảng và khó hiểu.
Nhưng trước khi bắt đầu, chúng ta hãy đặt nền móng đã.
Nền tảng n8n là gì?
n8n là một nền tảng tự động hóa quy trình làm việc linh hoạt (không hoàn toàn mã nguồn mở!) dành cho các chuyên gia kỹ thuật muốn xây dựng các quy trình phức tạp nhanh hơn. Kết nối mọi thứ với mọi thứ qua hàng trăm nút chuyên dụng hoặc cấu hình một yêu cầu HTTP chung.
XML là gì?
XML, hay Ngôn ngữ Đánh dấu Mở rộng, là một định dạng được sử dụng rộng rãi để trao đổi thông tin giữa các nền tảng khác nhau. XML rất linh hoạt, cho phép dễ dàng mở rộng. Một trong nhiều lợi ích của XML là nó dễ đọc đối với con người và máy móc, phù hợp cho cả người dùng cuối và hệ thống. Trong khi định dạng JSON mới hơn đã trở nên phổ biến trong phát triển web, XML vẫn được sử dụng trong các nền tảng doanh nghiệp hoặc khi cần thiết để truyền dữ liệu trong các ngành công nghiệp có quy định. Dưới đây là ví dụ về một tệp XML đơn giản:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Nhắc nhở</heading>
<body>Đừng quên tôi vào cuối tuần này!</body>
</note>
Làm thế nào để tôi chuyển đổi SQL thành XML?
Các engine SQL khác nhau cung cấp các cách riêng để xuất SQL ra định dạng XML. Ví dụ:
- MS SQL Server có câu lệnh riêng với Mệnh đề FOR XML AUTO.
- PostgreSQL sử dụng một cách tiếp cận khác qua một số hàm XML.
- Cuối cùng, MySQL có tùy chọn đặc biệt trong lệnh CLI mysqldump để xuất toàn bộ cơ sở dữ liệu SQL hoặc các bảng cụ thể sang định dạng XML.
Như bạn có thể thấy, mỗi engine SQL sử dụng cách riêng của nó để xuất dữ liệu sang định dạng XML. Thật tuyệt vời biết bao nếu có một công cụ chuyển đổi duy nhất hoạt động với tất cả các loại dữ liệu SQL.
Và một công cụ như vậy vẫn tồn tại!
Với n8n, bạn không còn phải bận tâm với các giao diện SQL riêng biệt và trình chuyển đổi XML nữa; thay vào đó, bạn có một nền tảng tổng hợp kết hợp cả hai.
Làm thế nào để xuất SQL ra XML với n8n?
Hãy xem qua quy trình làm việc này để xuất bảng SQL sang định dạng XML.

Bước 1. Trích xuất dữ liệu từ SQL
Trước tiên, có một nút SQL lấy ngẫu nhiên 16 bản ghi từ cơ sở dữ liệu. Nếu bạn đã có dữ liệu sẵn trong SQL, hãy tiếp tục và thêm một nút phù hợp (n8n hỗ trợ nhiều engine SQL thông qua các nút riêng biệt).

Sau khi cấu hình kết nối cơ sở dữ liệu, hãy lấy một số bản ghi bằng truy vấn SQL sau:
SELECT * from products ORDER BY RAND() LIMIT 16;
Bước 2. Tạo một file XML đơn giản từ bảng SQL
Tiếp theo, hãy tạo một file XML đơn giản từ dữ liệu này. Điều này phù hợp với phần trên cùng của quy trình làm việc.
Chúng ta thêm một nút Set và định nghĩa một số biến chuỗi như trong hình chụp màn hình.

Chúng ta sử dụng ký hiệu chấm để định nghĩa các khóa lồng nhau. Ví dụ, tên Product.Code
có nghĩa là khóa JSON “Product” sẽ được tạo ra trước tiên và sau đó khóa “Code” sẽ được tạo ra như một con của nó.
Hãy xem cấu trúc JSON ở phía bên phải của hình chụp màn hình.
Tiếp theo, nút ItemLists được sử dụng để tạo một mảng các phần tử.

Tại sao điều này lại cần thiết?
Nếu bỏ qua bước này, 16 file XML từng cái một sẽ được tạo ra trong nút XML. Trong trường hợp bạn muốn tất cả 16 mục trong một file, chúng phải được kết hợp lại.
Chúng ta đã hoàn thành phần tiền xử lý, bây giờ có thể tạo file XML bằng nút XML.

Nút XML tạo ra một chuỗi văn bản và lưu nó trong khoá “data”. Chúng ta chỉ cần sử dụng các nút Move Binary Data và Write Binary File để tạo một file XML mới trên máy chủ. Dưới đây là kết quả cuối cùng:

Bước 3. Tạo file XML có thuộc tính
Bây giờ khi đã biết cách xuất SQL sang file XML đơn giản, hãy đi sâu một chút và xem cách tạo các file XML có thuộc tính. Một hệ thống bên thứ ba có thể yêu cầu thuộc tính XML, vì vậy điều quan trọng là phải biết cách tạo chúng trong n8n. Dưới đây là một lời giải thích ngắn gọn về thuộc tính XML là gì.
Về cơ bản, việc chuyển đổi một bảng SQL sang XML có thuộc tính được thực hiện trong n8n theo đúng cách. Chỉ có hai điều chỉnh nhỏ cần thực hiện.
Thứ nhất, cần một khóa đặc biệt $ (ký hiệu đô la). Khóa này xác định những khóa JSON nào sẽ được chuyển thành thuộc tính XML. Hãy xem phần dưới của quy trình làm việc, nút Set:

Trong ví dụ này, khóa JSON Product có ba khóa con: Name, Line và Scale. Nó cũng có một khóa $ với hai khóa con, Price và Code. Hai khóa JSON này sẽ trở thành các thuộc tính của khóa Product.
Đây là cách thực hiện.
Trong nút XML, thêm một tham số Khóa Thuộc tính khác và đảm bảo rằng nó có cùng giá trị với dấu dollar:

Sau khi bạn đã tạo và lưu tệp XML mới, mở nó trong trình chỉnh sửa văn bản. Bạn có thể thấy rằng Price và Code hiện nay là các thuộc tính của phần tử Product, chứ không phải các phần tử riêng biệt.

Vì vậy, chỉ cần sử dụng ba nút: Set, ItemLists và XML, bạn có thể định nghĩa một cấu trúc XML gần như phức tạp bất kỳ và tạo ra một tệp XML. Điều này cho phép bạn xuất dữ liệu SQL từ hầu như bất kỳ engine SQL nào được hỗ trợ bởi n8n.
Cách nhập XML vào SQL với n8n?
Cho đến nay, chúng ta đã đi chi tiết về cách tạo một tệp XML từ cơ sở dữ liệu SQL. Nhưng bạn cũng có thể đặt nhiệm vụ ngược lại – để thêm dữ liệu XML trở lại vào SQL.
Chúng ta sẽ sử dụng tệp XML hiện có của mình và trình diễn cách nhập nó vào một cơ sở dữ liệu SQL.

Bước 1. Nhận tệp XML
Đầu tiên, chúng ta đọc tệp nhị phân đã được lưu trên máy chủ. Trong trường hợp của bạn, tệp XML này có thể đến từ hệ thống bên ngoài hoặc tải từ lưu trữ đám mây. n8n hỗ trợ nhiều cách khác nhau để nhập một tệp XML.
Tiếp theo, chúng ta cần chuyển đổi dữ liệu nhị phân thành JSON. Quá trình này thực hiện trong ba bước.
Có một đoạn mã JS nhỏ trong nút Code vớic đọc bộ đệm dữ liệu nhị phân và chuyển đổi nội dung của tệp XML thành biến chuỗi:
let binaryDataBufferItem = await this.helpers.getBinaryDataBuffer(0, 'data');
var data = binaryDataBufferItem.toString('utf8')
return {"data": data};
Bước 2. Chuẩn bị dữ liệu XML để nhập
Tiếp theo, trong nút XML, chọn chế độ XML to JSON.

Nút này giúp chúng ta phân tích cú pháp XML thành SQL và có nhiều tùy chọn hữu ích. Bạn có thể tìm hiểu thêm về chúng trên trang tài liệu của nút XML. Hiện tại, chỉ cần chọn tùy chọn Attribute Key và kích hoạt công tắc Merge Attributes. Trong trường hợp bạn có một tệp XML với cấu trúc càng phức tạp hơn, bạn có thể thử nghiệm với các tùy chọn này để có kết quả dễ đọc hơn.
Cuối cùng, trước khi nhập dữ liệu vào SQL, chúng ta cần tách các mục khỏi mảng. Đây về cơ bản là bước đối nghịch so với những gì chúng ta đã làm ở phần trước của hướng dẫn.
Trong nút ItemLists, chọn hoạt động Split Out Items và nhập “Products.Product” trong tùy chọn Fields.

Kết quả thu được là một đối tượng JSON đã phẳng, giúp ích cho quá trình nhập khẩu.
Trước khi nhập dữ liệu, hãy tạo một bảng rỗng mới có cùng cấu trúc như bảng products. Luồng công việc mẫu đã có sẵn một nút SQL thực thi hai câu lệnh SQL:
CREATE TABLE IF NOT EXISTS new_table AS SELECT * FROM products;
TRUNCATE new_table;
- Câu lệnh TRUNCATE xóa tất cả dữ liệu khỏi new_table mà vẫn giữ nguyên cấu trúc của bảng.
Bước 3. Nhập bản ghi vào bảng SQL
Bây giờ chúng ta đã sẵn sàng để nhập dữ liệu XML vào bảng SQL. Đi tới cài đặt của nút SQL cuối cùng và cấu hình nó:
- Chọn Operation là Insert.
- Chọn new_table từ danh sách thả xuống.
- Nếu các khóa JSON khớp chính xác với tên biến SQL, bạn có thể chọn Auto-Map Input Data to Columns.
- Nếu không, hãy sử dụng lựa chọn thủ công và chỉ định tất cả các biến sẽ được nhập.

Làm thế nào để gửi tệp XML?
Tuyệt vời, giờ bạn đã biết cách xuất bảng SQL thành tệp XML và chuyển XML trở lại thành bảng SQL, hãy cùng nhìn lại một bước.
Cho đến nay, chúng ta chỉ mới trình diễn cách lưu tệp XML trên máy chủ. Tuy nhiên, bạn có thể muốn gửi tệp đó đi xa hơn. n8n có rất nhiều cách để thực hiện điều này!
- Với nút Send Email, bạn có thể gửi tệp XML theo cách truyền thống. Có thể người nhận cần tải dữ liệu thủ công lên một hệ thống nào đó.
- Với nút FTP, bạn có thể lưu tệp XML vào máy tính từ xa.
- Nếu bạn đang sử dụng lưu trữ S3, một nút đặc biệt đã sẵn sàng phục vụ bạn.
- Với nút HTTP Request, bạn có thể tải tệp XML trực tiếp lên hệ thống bên thứ ba.
Bạn có thể khám phá hàng trăm nút tích hợp trong n8n và chọn ra cái phù hợp giúp bạn giải quyết công việc của mình.
Làm thế nào để hình dung một tệp XML?
Nếu bạn mong đợi người nhận xem tệp XML một cách trực quan, bạn có thể muốn làm cho quá trình này dễ dàng hơn và định dạng output XML sao cho dễ đọc. Trong chương phụ này, chúng tôi sẽ chỉ cho bạn cách thực hiện điều này hoàn toàn với mẫu XSL.
Các nhà phát triển có kinh nghiệm biết rằng XML là định dạng có tuổi đời lâu dài với nhiều công nghệ hỗ trợ xung quanh. Một trong số đó là XSLT – một ngôn ngữ mẫu cho XML. Cả XML và XSLT đều là tiêu chuẩn của W3C, nghĩa là chúng được hỗ trợ bởi hầu hết các trình duyệt.
Hiểu rõ điều này, bạn chỉ cần gửi một tệp XML kèm liên kết tới mẫu XSL, trình duyệt sẽ tự xử lý phần còn lại. Hãy xem ví dụ:

Webhook phục vụ cùng một tệp XML mà chúng ta đã tạo trong phần trước của hướng dẫn. Điểm khác biệt duy nhất là có thêm liên kết tới stylesheet XSL.
Khi mở tệp XML như vậy trong trình duyệt, nó sẽ được chuyển đổi thành một trang có kiểu dáng đẹp:
Điều này có thể thực hiện như thế nào?

Vì câu trả lời chi tiết sẽ cần một bài viết riêng, chúng tôi chỉ muốn chia sẻ nhanh và cung cấp các liên kết để bạn có thể tự khám phá.
- Thành phần chính của quy trình này là tệp mẫu XSL. Nó sử dụng ngôn ngữ kiểu cho XML để phân tích các phần tử XML và ánh xạ giá trị của chúng vào một trang HTML. Chúng tôi đã cung cấp tất cả các quy tắc ánh xạ, thêm liên kết đến mẫu bootstrap 5, và tạo một đoạn JavaScript nhỏ cho các popup.
- Thứ hai, tải xuống ví dụ quy trình làm việc miễn phí này, cấu hình thông tin đăng nhập cơ sở dữ liệu và URL webhook. Lưu ý rằng tệp mẫu XSL chỉ hoạt động với cơ sở dữ liệu ví dụ. Trong trường hợp bạn có dữ liệu khác, vui lòng cập nhật tệp XSL phù hợp. Khi mọi thứ đã được thiết lập, bạn có thể nhập URL này vào trình duyệt của mình và xem một trang được định dạng đẹp.

Tổng kết
Trong hướng dẫn này, chúng tôi đã cung cấp một cách chi tiết về cách làm việc với SQL và XML:
- Cách xuất bảng SQL sang định dạng XML (với và không có thuộc tính XML);
- Cách nhập XML vào cơ sở dữ liệu SQL;
- Chúng tôi cũng đã xem xét ngắn gọn cách chuyển XML sang hệ thống khác hoặc gửi đến người nhận tiếp theo;
- Như một chủ đề bổ sung, chúng tôi đã trình bày phương pháp trực quan hóa dữ liệu XML bằng cách sử dụng mẫu XSL và n8n.
Tiếp theo là gì?
Điều tuyệt nhất về hướng dẫn này là nó có thể được sử dụng như một điểm xuất phát để tạo ra các quy trình làm việc phức tạp hơn:
- Sử dụng các nút khác và tạo các tệp XML từ các cơ sở dữ liệu SQL khác nhau như Snowflake, MongoDB hoặc MS SQL Server.
- Để làm việc với các định dạng khác, bạn cũng có thể dễ dàng xuất và nhập các tệp CSV vào MySQL.
Với n8n, bạn có thể làm việc một mình, như một phần của nhóm nhỏ, hoặc trong một doanh nghiệp lớn. Chọn từ các gói đám mây của chúng tôi để bắt đầu ngay bây giờ hoặc khám phá các tính năng mạnh mẽ của phiên bản Enterprise, được tin dùng bởi nhiều tập đoàn lớn. Để tham khảo thêm về các template của n8n academy, các bạn có thể truy cập vào đây: N8n template