Hướng dẫn bulk insert from one table to another in mysql - chèn hàng loạt từ bảng này sang bảng khác trong mysql

Giao dịch bạn không thực sự đó là lý do tại sao tôi đã xóa nó, phần còn lại được kiểm soát bởi giới hạn và bù mà bạn cần thực hiện các bản cập nhật một phần như vậy

CREATE TABLE test_arc [id int,check_time datetime, updated datetime]
CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
INSERT INTO test_data VALUES [1,NOW[] - INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY],[2,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY]
,[3,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY],[4,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY]
,[5,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY],
[6,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY],[7,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY]
,[8,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY]
,[9,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY],[10,NOW[]- INTERVAL 1 DAY,NOW[]- INTERVAL 1 DAY]
SELECT * FROM test_data 
id | check_time          | updated            
-: | :------------------ | :------------------
 1 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 2 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 3 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 4 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 5 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 6 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 7 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 8 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
 9 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
10 | 2022-02-12 18:27:12 | 2022-02-12 18:27:12
CREATE PROCEDURE `insert_data` []
BEGIN
DECLARE i BIGINT DEFAULT 0;
DECLARE limitSize INT DEFAULT 5;
DECLARE maxnumber BIGINT;

SET maxnumber = [SELECT COUNT[*] FROM test_data] + 1;

WHILE i ='2022-02-05'
         ORDER BY updated ASC
         LIMIT i, limitSize
     ON DUPLICATE KEY UPDATE id =VALUES[id], check_time=VALUES[check_time],updated  = Values[updated ];   SET i = i + limitSize;
END WHILE;
END
CALL insert_data[];
SELECT * FROM test_arc
id | check_time          | updated            
-: | :------------------ | :------------------
 1 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 2 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 3 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 4 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 5 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 6 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 7 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 8 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
 9 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12
10 | 2022-02-12 18:27:12 | 2022-02-13 18:27:12

DBFiddle ở đây

Các bảng Innodb, không giống như Myisam*, không thể "chỉ được sao chép", như một phần của từ điển dữ liệu của nó [và có khả năng các cấu trúc khác mà bảng tùy thuộc vào, như bộ đệm hợp nhất] được đặt trong bộ nhớ [nếu máy chủ đang chạy] và trong Không gian bảng chung/chính, a.k.a. Tệp lớn có tên là

CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
1.

Nếu bạn đang sử dụng Percona Server> = 5.1 hoặc MySQL> = 5.6, có hỗ trợ cho các không gian bảng có thể vận chuyển, cho phép bạn xuất và nhập bảng trực tiếp từ hệ thống tập tin. Đây là phương pháp cho MySQL và Percona. Trong cả hai trường hợp, bạn đã yêu cầu bạn đã tạo bảng với tùy chọn

CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
2 và liên quan đến việc sử dụng
CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
3 và/hoặc Percona Xtrabakup [nếu bạn muốn xuất khẩu trực tuyến]. Xin lưu ý rằng Percona Server hoặc Xtrabakup không có sẵn cho Windows.
Here it is the method for MySQL and for Percona. In both cases, it is required that you had created the table with the
CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
2 option and involves the usage of
CREATE TABLE test_data [id int,check_time datetime, updated Datetime]
3 and/or Percona Xtrabakup [if you want the export to be done online]. Please note that Percona Server or Xtrabakup are not available for Windows.

Phương thức này sẽ, nói chung, nhanh như sao chép tệp bằng các lệnh FileSystem [CP, RSYNC]. using the filesystem commands [cp, rsync].

Mặc dù có thể có một số trường hợp điều này có thể hoạt động trong MySQL

Bài Viết Liên Quan

Chủ Đề