Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

thủ tục được lưu trữ mysql với INTO OUTFILE

Giả định ( vì lợi ích của ví dụ ) mà deals của bạn bảng trông giống như

---------------------------
| id | deal_date  | deal  |
---------------------------
| 1  | 2014-03-10 | Deal1 |
| 2  | 2014-03-11 | Deal2 |
| 3  | 2014-03-12 | Deal3 |
---------------------------

Bây giờ mã thủ tục của bạn có thể trông

DELIMITER //
CREATE PROCEDURE get_deals()
BEGIN
    -- create a temporary table and fill it with the desired subset of data
    -- Apply WHERE and ORDER BY as needed
    DROP TEMPORARY TABLE IF EXISTS tmp_deals;
    CREATE TEMPORARY TABLE tmp_deals 
    SELECT id, deal_date, deal -- explicitly specify real column names here. Don't use SELECT *. It's a bad practice.
      FROM deals
     ORDER BY id DESC;

    -- write the resultset to the file
    SELECT * 
      INTO OUTFILE '/path/to/deals.txt'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
      FROM tmp_deals;

    -- return the resultset to the client
    SELECT * FROM tmp_deals; 
END//
DELIMITER ;

Sau khi thực hiện nó:

CALL get_deals();

Trên ứng dụng khách, bạn sẽ nhận được:

---------------------------
| id | deal_date  | deal  |
---------------------------
| 3  | 2014-03-12 | Deal3 |
| 2  | 2014-03-11 | Deal2 |
| 1  | 2014-03-10 | Deal1 |
---------------------------

Và nội dung tệp sẽ là:

3,"2014-03-12","Deal3"
2,"2014-03-11","Deal2"
1,"2014-03-10","Deal1"

Lưu ý: khi sử dụng OUTFILE MySQL yêu cầu tệp phải được tạo làm mới . Nếu bạn để tệp trong thư mục đầu ra thì trong lần gọi thủ tục tiếp theo, bạn sẽ gặp lỗi sau

Một cách để giải quyết vấn đề này là thêm dấu thời gian vào tên tệp trong chính thủ tục hoặc bằng cách chuyển một giá trị qua một tham số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn các tệp lớn trong MySQL db bằng PHP?

  2. MySQL truy vấn regex không phân biệt chữ hoa chữ thường

  3. Lỗi SQL:1054, SQLState:42S22 Cột không xác định trong lỗi 'danh sách trường' Lỗi Java Spring Boot Mysql

  4. Trình kết nối / C ++ Mã lỗi MySQL:2014, SQLState:HY000 và Các lệnh không đồng bộ hóa lỗi tại sao?

  5. Chơi 2.4 - Slick 3.0.0 - DELETE không hoạt động