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

trước khi chèn trình kích hoạt để chèn các hàng trùng lặp vào một bảng khác

Theo như bạn kích hoạt có liên quan, có một số vấn đề:

  1. bạn không có ; sau khi chèn câu lệnh
  2. IF câu lệnh phải kết thúc bằng END IF và dấu chấm phẩy, không chỉ END
  3. bạn phải thay đổi dấu phân cách bằng DELIMITER lệnh
  4. sử dụng EXISTS() thay vào đó là COUNT()

Điều đó đang được nói rằng trình kích hoạt của bạn có thể trông giống như

DELIMITER $$
CREATE TRIGGER tblspmaster_noduplicate
BEFORE INSERT ON tblspmaster
FOR EACH ROW
BEGIN
  IF (EXISTS(SELECT * FROM tblspmaster WHERE sp = NEW.sp)) THEN
    INSERT INTO tblspduplicate (sp,FileImported,AMZFileName)   
    VALUES (NEW.sp, NEW.FileImported, NEW.AMZFileName);
  END IF;
END$$
DELIMITER ;

Đây là SQLFiddle bản demo

Sử dụng IGNORE trong LOAD DATA INFILE của bạn tuyên bố. MySql sẽ coi các lỗi (vi phạm ràng buộc duy nhất) là cảnh báo loại bỏ các bản sao một cách hiệu quả.

LOAD DATA LOCAL INFILE 'E://31october//SP//sp_files_sample1//400k sp00 6-19 E.csv' 
IGNORE  
INTO TABLE tblspmaster 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
-- IGNORE 1 LINES

Lưu ý: Chèn FYI không thành công cho các hàng trùng lặp sẽ để lại khoảng trống trong các giá trị của auto_increment SCN cột.

Bạn có thể xem xét một cách tiếp cận khác có thể phù hợp hơn với hiệu suất khôn ngoan:

  1. tạo bảng dàn tạm thời không có ràng buộc và không có chỉ số
  2. sử dụng LOAD DATA INFILE để điền bảng giai đoạn
  3. tblspmaster và bảng dàn dựng và sử dụng INSERT ... SELECT cú pháp chèn tất cả các bản sao trong tblspduplicate trong một lần
  4. chỉ chèn các hàng không tồn tại từ bảng dàn vào tblspmaster lại một lần nữa
  5. TRUNCATE hoặc DROP bảng phân đoạn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng MySQL để xác định xem hôm nay có phải là sinh nhật của người dùng hay không

  2. In kết quả ở định dạng MySQL bằng Python

  3. Tạo khung dữ liệu Spark từ truy vấn SQL

  4. Cách kết nối Google Cloud SQL với C #

  5. Thứ tự hoạt động của MySQL?