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

Sử dụng lệnh LOAD DATA INFILE trong một thủ tục được lưu trữ

Không, tôi cho là không thể vì lý do an ninh. Tuy nhiên, bạn có thể tạo truy vấn "TẢI DỮ LIỆU" cho các bảng trong cơ sở dữ liệu bằng thủ thuật này (trả về một loạt các truy vấn cho mỗi bảng:cắt ngắn bảng trước khi tải dữ liệu, sau đó tắt khóa, sau đó tải dữ liệu, sau đó bật khóa):

SELECT CONCAT('TRUNCATE TABLE ',table_name,'; ALTER TABLE ',table_name,' DISABLE KEYS;    LOAD DATA INFILE "',table_name,'.txt" INTO TABLE ',table_name,' FIELDS TERMINATED BY "\\t" LINES TERMINATED BY "\\n"; ALTER TABLE ',table_name,' ENABLE KEYS; ')
FROM information_schema.`TABLES` as infs
WHERE infs.`TABLE_SCHEMA`=DATABASE()
AND infs.`TABLE_TYPE`!='VIEW';

Sau khi bạn chạy truy vấn này, các hàng được kết quả là các truy vấn để chuyển dữ liệu. Tôi sử dụng nó khi di chuyển toàn bộ nội dung cơ sở dữ liệu sang một cơ sở dữ liệu khác. Tất nhiên, trong truy vấn đó, bạn có thể lọc các bảng cần thiết của mình bằng cách sử dụng nhiều điều kiện hơn. Hy vọng nó sẽ hữu ích.




  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ịch sử di chuyển không nhất quán khi thay đổi tên ứng dụng django

  2. Cách tăng tốc độ chèn từ gấu trúc.DataFrame .to_sql

  3. Dữ liệu nhóm Mysql theo thời gian

  4. Hàm MySQL để tìm số ngày làm việc giữa hai ngày

  5. MySQL có tiêu tốn nhiều tài nguyên hơn đáng kể so với các DBMS khác không?