sql >> Database teknologi >  >> RDS >> Mysql

MySQL Indlæs data i fil, når betingelserne er opfyldt

En mulighed er at bruge UDF , for eksempel:lib_mysqludf_sys .

Efter installation af UDF'en kan du gøre noget som:

Shell-script (/server/loadpath/load.sh):

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

Lagret procedure:

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');

VIGTIG: Valider inputdataene for at forhindre enhver kodeinjektion.




  1. Sådan fortsætter du Cursor Loop-behandling efter undtagelse i Oracle

  2. MySQL datatype INT(11) mens USIGNED INT(10)?

  3. vælg relevanstitel baseret på tag svarende til som med mysql

  4. Sådan vender du rækkefølgen af ​​tegn i en streng i MySQL