Xem dữ liệu BLOB trong MySQL

RazorSQL chứa một công cụ cho phép người dùng làm việc với MySQL blobs, dữ liệu nhị phân và dữ liệu hình ảnh. Các tùy chọn bao gồm khả năng chỉnh sửa dữ liệu blob, lưu dữ liệu blob vào tệp và xem dữ liệu blob dưới dạng hình ảnh

Để khởi chạy trình chỉnh sửa blob MySQL, hãy kết nối với MySQL, sau đó xem nội dung của bảng chứa cột blob hoặc nhị phân bằng cách sử dụng tùy chọn xem nội dung của trình duyệt cơ sở dữ liệu hoặc bằng cách chạy truy vấn chọn đối với bảng. Sau khi kết quả được hiển thị trong phần kết quả truy vấn, nhấp chuột phải/menu ngữ cảnh của ô kết quả chứa dữ liệu nhị phân sẽ chứa các tùy chọn được gọi là "Trình chỉnh sửa dữ liệu nhị phân" và "Xem dưới dạng hình ảnh"

Để chỉnh sửa dữ liệu nhị phân hoặc lưu dữ liệu nhị phân vào một tệp, có thể chọn tùy chọn "Trình chỉnh sửa dữ liệu nhị phân". Lưu ý, tùy chọn này chỉ khả dụng cho các bảng có khóa chính. Sau khi chọn mục trình đơn trình soạn thảo dữ liệu nhị phân, cửa sổ trình soạn thảo dữ liệu nhị phân sẽ hiển thị. Có các tùy chọn để lưu dữ liệu nhị phân vào tệp, cập nhật dữ liệu nhị phân từ tệp, xem dữ liệu dưới dạng hình ảnh hoặc chỉnh sửa dữ liệu dưới dạng dữ liệu ký tự sau khi chỉ định mã hóa ký tự

Để chèn dữ liệu nhị phân vào một blob hoặc cột nhị phân trong một hàng mới trong bảng cơ sở dữ liệu, trước tiên, một hàng phải được chèn có chứa giá trị null cho cột hoặc giá trị giả. Sau khi hàng mới được chèn vào, người dùng có thể truy vấn bảng bằng RazorSQL và khởi chạy trình chỉnh sửa dữ liệu nhị phân

Trong khi thực hiện kiểm tra API, lưu dữ liệu trong cơ sở dữ liệu hoặc thực hiện đọc dữ liệu từ cơ sở dữ liệu, thường phải gặp các đối tượng thuộc loại BLOB

BLOB, hoặc Đối tượng lớn nhị phân, là nơi API có thể lưu trữ hình ảnh, video, văn bản và các thông tin khác được lưu trữ ở dạng nhị phân. [Dữ liệu nhị phân hoặc chế độ xem dữ liệu nhị phân là dữ liệu được biểu thị bằng 1 và 0]. Ngoài việc ghi dữ liệu vào BLOB, API cũng có thể đọc dữ liệu từ BLOB

Trong bài đăng trên blog này, bạn sẽ thấy cách sử dụng Apache JMeter™ để tạo bảng với một trong các kiểu dữ liệu BLOB, cách ghi dữ liệu trong BLOB và cách đọc dữ liệu từ BLOB

Bắt đầu nào

Mục lục

  • BLOB trong MySQL là gì?
  • Các loại BLOB
  • Tạo một bảng có kiểu dữ liệu BLOB trong JMeter
  • Thêm hàng vào bảng chứa BLOB trong JMeter
  • Lấy dữ liệu từ BLOB trong JMeter

BLOB trong MySQL là gì?

BLOB, viết tắt của Đối tượng lớn nhị phân, là loại dữ liệu MySQL có thể lưu trữ hình ảnh, tệp PDF, đa phương tiện và các loại dữ liệu nhị phân khác

Các loại BLOB

Trong MySQL, có 4 loại BLOB. TINYBLOB, BLOB, MEDIUMBLOB và LONGBLOB. Tất cả 4 loại đối tượng này chỉ khác nhau về kích thước của dữ liệu có thể được lưu trữ

📕 Tài nguyên liên quan. Tìm hiểu thêm về Cách kiểm tra kết nối MySQL

Bảng bên dưới hiển thị các giá trị về độ dài dữ liệu mà mỗi loại đối tượng có thể chứa

 

Loại đối tượngĐộ dài giá trị mà đối tượng có thể giữTINYBLOBtừ 0 đến 255 byteBLOBtừ 0 đến 65535 byteMEDIUMBLOBtừ 0 đến 16 777 215 byteLONGBLOBtừ 0 đến 4 294 967 295 byte

 

Tạo một bảng có kiểu dữ liệu BLOB trong JMeter

Để tạo một bảng có kiểu dữ liệu BLOB, bạn cần làm như sau trong JMeter

1. Thêm một nhóm chủ đề

Nhấp chuột phải -> Chủ đề -> Nhóm chủ đề

2. Cấu hình kết nối đến cơ sở dữ liệu

 

Định cấu hình kết nối với cơ sở dữ liệu và tìm hiểu cách kiểm tra kết nối MySQL

3. Thêm một yêu cầu JDBC

Nhấp chuột phải vào Nhóm chủ đề -> Thêm ->  Trình lấy mẫu -> Yêu cầu JDBC

Loại truy vấn -> Cập nhật câu lệnh

Trong bước này, chúng tôi sẽ gửi yêu cầu đến cơ sở dữ liệu để tạo bảng

Trong Yêu cầu JDBC, thêm đoạn mã sau

CREATE TABLE sakila.test_blob[ ID INT, TEXT BLOB, IMAGE BLOB];

Đoạn mã hiển thị ở trên thực hiện như sau

  • CREATE TABLE - Toán tử tạo bảng trong cơ sở dữ liệu
  • sakila - Tên cơ sở dữ liệu
  • test_blob - Tên của bảng sẽ được tạo

ID INT

  • ID - Tên cột trong bảng
  • INT - Kiểu dữ liệu cho các giá trị sẽ được lưu trữ trong cột

VĂN BẢN BLOB

  • TEXT - Tên cột trong bảng
  • BLOB - Kiểu dữ liệu cho các giá trị sẽ được lưu trữ trong cột

HÌNH ẢNH BLOB

  • HÌNH ẢNH - Tên cột trong bảng
  • BLOB - Kiểu dữ liệu cho các giá trị sẽ được lưu trữ trong cột

4. Thêm một cây xem kết quả

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình nghe -> Xem cây kết quả

Bước này sẽ hiển thị yêu cầu mà JMeter gửi đến cơ sở dữ liệu và phản hồi mà nó nhận được từ cơ sở dữ liệu

Sau khi bắt đầu kiểm tra, chúng ta sẽ thấy kết quả như trong hình bên dưới

0 cập nhật có nghĩa là chúng tôi đã tạo thành công bảng trong cơ sở dữ liệu

Nếu chúng ta vào cơ sở dữ liệu, chúng ta cũng sẽ thấy bảng đã tạo, như trong hình bên dưới

Thêm hàng vào bảng chứa BLOB trong JMeter

Ví dụ sau đây cho thấy cách tạo một hàng trong bảng test_blob sẽ chứa BLOB và BLOB sẽ chứa văn bản

Giá trị cho đối tượng BLOB sẽ được chuyển thành một chuỗi trong chính truy vấn SQL

Để làm điều này, bạn cần làm như sau

5. Thêm một yêu cầu JDBC

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình lấy mẫu -> Yêu cầu JDBC

Loại truy vấn -> Cập nhật câu lệnh

Trong Yêu cầu JDBC, thêm đoạn mã sau

INSERT INTO sakila.test_blob VALUES [1, 'Test', null];

 

Đoạn mã hiển thị ở trên thực hiện như sau

  • INSERT INTO - Câu lệnh cho phép thêm dữ liệu vào bảng
  • sakila - Tên cơ sở dữ liệu
  • test_blob  - Tên của bảng mà dữ liệu sẽ được thêm vào
  • GIÁ TRỊ - Chỉ định các giá trị để thêm vào bảng
  • [1, 'Test', null] - Các giá trị được ghi vào các cột, trong trường hợp của chúng tôi
  • 1 - sẽ được viết trong cột ID
  • Kiểm tra - sẽ được viết trong cột TEXT. Trước khi giá trị "Test" được ghi vào cột "TEXT", cơ sở dữ liệu MySQL sẽ tự động tạo đối tượng BLOB và ghi giá trị "Test" vào đối tượng đó
  • null - sẽ được viết trong cột IMAGE

Sau khi bắt đầu kiểm tra, chúng ta sẽ thấy kết quả như trong hình bên dưới

1 bản cập nhật có nghĩa là chúng tôi đã thêm thành công dữ liệu vào bảng

Nếu chúng ta truy cập cơ sở dữ liệu và thực hiện CHỌN * TỪ sakila. test_blob, chúng ta sẽ thấy kết quả như trong hình bên dưới

Hình trên cho thấy trong cột "TEXT" một đối tượng BLOB đã được tạo

Để thấy rằng BLOB thực sự chứa giá trị "Kiểm tra", bạn cần thực hiện các thao tác sau trong cơ sở dữ liệu

  • BLOB -> Nhấp chuột phải -> Mở giá trị trong Trình xem -> Văn bản

Hình ảnh trên cho thấy rằng chúng tôi thực sự đã tạo một BLOB có chứa giá trị "Test"

Tiếp theo, bạn sẽ thấy cách tạo một hàng trong bảng test_blob sẽ chứa đối tượng BLOB và đối tượng BLOB sẽ chứa một hình ảnh

Để tạo một BLOB chứa hình ảnh, bạn cần làm như sau

6. Tạo một tệp hình ảnh và đặt nó vào C. /Dữ liệu chương trình/MySQL/Máy chủ MySQL 5. 7/Uploads/ thư mục

Trong trường hợp của chúng tôi, một hình ảnh. tệp png thuộc loại sau sẽ được tạo

Giải thích tại sao hình ảnh được đặt trong C. /ProgramData /MySQL/MySQL Server thư mục 5. 7/Uploads/ xuất hiện bên dưới

7. Thêm một yêu cầu JDBC

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình lấy mẫu -> Yêu cầu JDBC

Loại truy vấn -> Cập nhật câu lệnh

Trong Yêu cầu JDBC, thêm đoạn mã sau

INSERT INTO sakila.test_blobVALUES[2,null, LOAD_FILE['C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/image.png']];

 

Đoạn mã hiển thị ở trên thực hiện như sau

  • INSERT INTO - Câu lệnh cho phép thêm dữ liệu vào bảng
  • sakila - Tên cơ sở dữ liệu
  • test_blob  - Tên của bảng mà dữ liệu sẽ được thêm vào
  • GIÁ TRỊ - Chỉ định các giá trị để thêm vào bảng
  • [2, null, LOAD_FILE['C. /Dữ liệu chương trình/MySQL/Máy chủ MySQL 5. 7/Tải lên/hình ảnh. png']] - Các giá trị được ghi vào các cột
  • 2 - sẽ được viết trong cột ID
  • null - sẽ được viết trong cột TEXT
  • LOAD_FILE['C. /Dữ liệu chương trình/MySQL/Máy chủ MySQL 5. 7/Tải lên/hình ảnh. png'] - Đây là hàm đọc dữ liệu từ tệp và trả về dữ liệu dưới dạng chuỗi. Đối số của hàm này là đường dẫn đầy đủ đến tệp [Trong trường hợp này, đường dẫn đầy đủ là C. / ProgramData/MySQL/MySQL Server 5. 7/Tải lên/hình ảnh. png]. Chức năng này cho phép bạn đọc bất kỳ dữ liệu nào từ một tệp

Khi sử dụng chức năng này, có các hạn chế sau

  • Tệp phải nằm trong thư mục được phép tải xuống. Quyền này được đặt cho một thư mục cụ thể trong chính MySQL. Trong trường hợp của chúng tôi, tệp được đặt trong thư mục 'C. /ProgramData/MySQL/MySQL Server5. 7/Uploads, đối với thư mục này mặc định MySQL cấp quyền tải file
  • Người dùng đã kết nối với cơ sở dữ liệu phải có quyền tải tệp lên

Nếu các yêu cầu này không được đáp ứng, thì null được tạo thay vì BLOB

Trong trường hợp của chúng ta, hàm LOAD_FILE['C. /ProgramData/MySQL/MySQL Server5. 7/Tải lên/ hình ảnh. png'] đọc dữ liệu từ tệp và chuyển đổi thành chuỗi. Sau đó, MySQL tạo một đối tượng BLOB và đặt dữ liệu vào đối tượng đã tạo sẽ được ghi vào bảng test_blob

Sau khi bắt đầu kiểm tra, chúng ta sẽ thấy kết quả như trong hình bên dưới

1 cập nhật có nghĩa là chúng tôi đã thêm thành công dữ liệu vào bảng

Nếu chúng ta truy cập cơ sở dữ liệu và thực hiện CHỌN * TỪ sakila. test_blob, chúng ta sẽ thấy kết quả như trong hình bên dưới

Hình trên cho thấy trong cột "IMAGE" một đối tượng BLOB đã được tạo

Để thấy rằng một đối tượng BLOB thực sự chứa một hình ảnh, bạn cần làm như sau

  • BLOB -> Nhấp chuột phải -> Mở giá trị trong Trình xem -> Hình ảnh

Hình ảnh trên cho thấy rằng chúng tôi thực sự đã tạo một đối tượng BLOB có chứa một hình ảnh

Ngoài hàm LOAD_FILE[] đọc dữ liệu từ file, bạn còn có thể sử dụng Groovy

Để tạo một BLOB chứa hình ảnh hoặc văn bản, bạn cần làm như sau

8. Thêm Trình lấy mẫu JSR223

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình lấy mẫu -> Trình lấy mẫu JSR223

Trình lấy mẫu JSR223 -> Ngôn ngữ Groovy

Trong Trình lấy mẫu JSR223, hãy thêm đoạn mã sau

String fileWithImage = "C:\\Users\\CC\\Desktop\\image.png";
String fileWithText = "C:\\Users\\CC\\Desktop\\text.txt";

new File[fileWithImage].withInputStream {stream -> 
		
		String image = Base64.getEncoder[].encodeToString[stream.readAllBytes[]];            
		vars.put["image", image];
}

new File[fileWithText].withInputStream {stream -> 
		
		String text = new String[stream.readAllBytes[]];            
		vars.put["text", text];
}

 

 

Đoạn mã hiển thị ở trên thực hiện như sau

Tệp chuỗiWithImage = "C. \\Users\\CC\\Desktop\\image. png" - Tạo một biến có kiểu dữ liệu Chuỗi có giá trị là đường dẫn đầy đủ đến tệp hình ảnh

Tệp chuỗiWithText = "C. \\Users\\CC\\Desktop\\text. txt"; - Tạo một biến có kiểu dữ liệu String, có giá trị là đường dẫn đầy đủ đến tệp có văn bản

Tập tin này sẽ trông giống như hình dưới đây

Khi bạn sử dụng Groovy để đọc dữ liệu từ tệp, bạn có thể đặt tệp vào bất kỳ thư mục nào

new File[fileWithImage].withInputStream {stream ->
 
  String image = Base64.getEncoder[].encodeToString[stream.readAllBytes[]];           
  vars.put["image", image];
}

Trong mã này, đọc dữ liệu từ tệp dưới dạng byte, chuyển đổi byte sang Định dạng Base64 và gán giá trị kết quả cho biến “hình ảnh” với kiểu dữ liệu Chuỗi

Base64 là tiêu chuẩn để mã hóa dữ liệu nhị phân trong một chuỗi

new File[fileWithText].withInputStream {stream ->
 
  String text = new String[stream.readAllBytes[]];           
  vars.put["text", text];
}

Trong mã này, đọc dữ liệu từ tệp dưới dạng byte, chuyển đổi dữ liệu từ byte thành chuỗi và gán giá trị nhận được cho biến 'văn bản' với kiểu dữ liệu Chuỗi

9. Thêm một yêu cầu JDBC

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình lấy mẫu -> Yêu cầu JDBC

Loại truy vấn -> Cập nhật câu lệnh

Trong Yêu cầu JDBC, thêm đoạn mã sau

INSERT INTO sakila.test_blob VALUES [3, '${text}', FROM_BASE64['${image}']];

 

Đoạn mã hiển thị ở trên thực hiện như sau

  • INSERT INTO - Câu lệnh cho phép thêm dữ liệu vào bảng
  • sakila - Tên cơ sở dữ liệu
  • test_blob  - Tên của bảng mà dữ liệu sẽ được thêm vào
  • GIÁ TRỊ - Chỉ định các giá trị để thêm vào bảng
  • [3, '${text}', FROM_BASE64['${image}']] - Các giá trị được ghi vào các cột
  • FROM_BASE64 - một hàm MySQL chuyển đổi giá trị của biến '${image}' từ BASE64 thành một chuỗi
  • '${text}' - biến, giá trị của nó là dữ liệu từ tệp văn bản. txt
  • '${image}' - biến, giá trị của nó là dữ liệu từ tệp hình ảnh. png

Sau khi bắt đầu kiểm tra, chúng ta sẽ thấy kết quả như trong hình bên dưới

1 cập nhật có nghĩa là chúng tôi đã thêm thành công dữ liệu vào bảng

Nếu chúng ta truy cập cơ sở dữ liệu và thực hiện CHỌN * TỪ sakila. test_blob, chúng ta sẽ thấy kết quả như trong hình bên dưới

Hình trên cho thấy trong cột "TEXT", "IMAGE" một đối tượng BLOB đã được tạo

Để thấy rằng một đối tượng BLOB thực sự chứa hình ảnh và văn bản, bạn cần làm như sau

  • BLOB -> Nhấp chuột phải -> Mở giá trị trong Trình xem -> Văn bản
  • BLOB -> Nhấp chuột phải -> Mở giá trị trong Trình xem -> Hình ảnh

Những hình ảnh trên cho thấy rằng chúng tôi thực sự đã tạo các đối tượng BLOB có chứa một hình ảnh và văn bản

Lấy dữ liệu từ BLOB trong JMeter

Để lấy dữ liệu từ BLOB, bạn cần làm như sau

10. Thêm một yêu cầu JDBC

Nhóm chủ đề -> Nhấp chuột phải -> Thêm -> Trình lấy mẫu -> Yêu cầu JDBC

Loại truy vấn -> Tuyên bố chọn đã chuẩn bị

Tên biến kết quả -> Blob

Trong Yêu cầu JDBC, thêm đoạn mã sau

SELECT * FROM sakila.test_blob WHERE ID = '3'

 

 

Đoạn mã hiển thị ở trên thực hiện như sau

SELECT * FROM sakila.test_blob WHERE ID = '3'

Ví dụ mã này hiển thị nhận một hàng [với tất cả các trường] có giá trị ID = '3' từ bảng sakila. test_blob

11. Trong Yêu cầu JDBC, thêm Bộ xử lý hậu kỳ JSR223

 

Yêu cầu JDBC -> Nhấp chuột phải -> Thêm -> Bộ xử lý bài đăng -> Bộ xử lý hậu kỳ JSR223

JSR223 PostProcessor -> Ngôn ngữ Groovy

Trong JSR223 PostProcessor, thêm đoạn mã sau

byte[] blobByte = vars.getObject["Blob"].get[0].get["TEXT"];
String blob = new String[blobByte];
log.info[blob];

 

Đoạn mã hiển thị ở trên thực hiện như sau

  • byte[] blobByte = vars. getObject["Đốm màu"]. nhận được [0]. get["TEXT"];
  • Chuỗi blob = Chuỗi mới [blobByte];
  • đăng nhập. thông tin [đốm màu];

Sau khi bắt đầu kiểm tra, chúng ta sẽ thấy kết quả như trong hình bên dưới

Trong hình trên, bảng điều khiển JMeter hiển thị dữ liệu mà chúng tôi đã nhận được từ BLOB. Hàng 3 có dữ liệu “Test Test Test”

Bước tiếp theo. Chạy tập lệnh JMeter của bạn trong BlazeMeter

Sau khi tạo tập lệnh JMeter, bạn có thể tải JMX của mình lên BlazeMeter. Sử dụng BlazeMeter nếu bạn muốn mở rộng quy mô thử nghiệm của mình, cộng tác trong thử nghiệm và kết quả, chia sẻ báo cáo với người quản lý và cải thiện sự nhanh nhẹn

BẮT ĐẦU KIỂM TRA NGAY
 

Blog này ban đầu được xuất bản vào ngày 8 tháng 8 năm 2018 và kể từ đó đã được cập nhật về độ chính xác và mức độ liên quan

Làm cách nào để lấy dữ liệu BLOB từ cơ sở dữ liệu MySQL?

Truy xuất Hình ảnh và Tệp được lưu trữ dưới dạng BLOB từ Bảng MySQL bằng Python .
Cài đặt MySQL Connector Python bằng cách sử dụng pip
Thứ hai, Thiết lập kết nối cơ sở dữ liệu MySQL trong Python
Sau đó, Xác định truy vấn CHỌN để tìm nạp các giá trị cột BLOB từ bảng cơ sở dữ liệu
Thực hiện truy vấn CHỌN bằng con trỏ. hành hình[]
Sử dụng con trỏ

Dữ liệu BLOB trong MySQL là gì?

BLOB là một đối tượng lớn nhị phân có thể chứa một lượng dữ liệu thay đổi . Bốn loại BLOB là TINYBLOB , BLOB , MEDIUMBLOB và LONGBLOB. Chúng chỉ khác nhau về độ dài tối đa của các giá trị mà chúng có thể giữ. Bốn loại TEXT là TINYTEXT , TEXT , MEDIUMTEXT và LONGTEXT.

Làm cách nào để xem dữ liệu trong bảng MySQL?

Để sử dụng lệnh SHOW TABLES, trước tiên bạn cần đăng nhập vào máy chủ MySQL. .
Khi mở Máy khách dòng lệnh MySQL, hãy nhập mật khẩu của bạn
Chọn cơ sở dữ liệu cụ thể
Chạy lệnh SHOW TABLES để xem tất cả các bảng trong cơ sở dữ liệu đã được chọn

BLOB được lưu trữ trong MySQL như thế nào?

Tổng quan về Bộ lưu trữ BLOB . Các trang BLOB bên ngoài này được phân bổ từ cùng một vùng bảng chứa chỉ mục nhóm. Dữ liệu BLOB sẽ luôn được lưu trữ nội tuyến bất cứ khi nào có thể. The BLOB data can be stored inline in the clustered index record, or it can be stored externally in separate BLOB pages. These external BLOB pages are allocated from the same tablespace in which the clustered index resides. The BLOB data will always be stored inline whenever possible though.

Chủ Đề