sql >> データベース >  >> RDS >> Mysql

条件が満たされたときにMySQLがデータファイルをロードする

    1つのオプションは、UDF を使用することです。 例: lib_mysqludf_sys

    UDFをインストールした後、次のようなことができます。

    シェルスクリプト(/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. エラー1067(42000):「created_at」のデフォルト値が無効です

    2. php + mysql:php配列をmysqlに挿入します

    3. EntityFramework-1対1-ReferentialConstraintはストアで生成された列にマップされます

    4. Charであるトランザクションステータスに基づいてOrderID、transactionID、StatusをフェッチするSQLクエリ