Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Зареждане на Infile с данни, когато са изпълнени условията

Една от опциите е да използвате UDF , например:lib_mysqludf_sys .

След като инсталирате UDF, можете да направите нещо като:

Shell скрипт (/server/loadpath/load.sh):

mysql -u [user] -p[pass] -e "LOAD DATA INFILE '$1' INTO TABLE $2;"

Съхранена процедура:

DELIMITER $$

DROP PROCEDURE IF EXISTS load_data$$

CREATE PROCEDURE load_data(pfile VARCHAR(100), pdbtable VARCHAR(100))
BEGIN
    DECLARE exec_str VARCHAR(500);
    DECLARE ret_val INT;
    IF (check_10m_file() = 'file ok') THEN
        SET exec_str := CONCAT('sh /server/loadpath/load.sh ', pfile, ' ', pdbtable);
        SET ret_val := sys_exec(exec_str);
        IF ret_val = 0 THEN
            SELECT 'OK' Result;
        ELSE
            SELECT 'ERROR' Result;
        END IF;
    END IF;
END$$

DELIMITER ;

CALL load_data('/server/filepath/file.csv', 'mydb.mytable');

ВАЖНО: Валидирайте входните данни, за да предотвратите инжектиране на код.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Първо подреждане по конкретна стойност на полето

  2. Множество цикли While в рамките на цикъл While?

  3. Вземете идентификатора на последния вмъкнат запис в mybatis

  4. Laravel ред по има много отношения

  5. Mysql заявка за присъединяване към три таблици с множество колони