Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Załaduj plik danych MySQL po spełnieniu warunków

Jedną z opcji jest użycie UDF , na przykład:lib_mysqludf_sys .

Po zainstalowaniu UDF możesz zrobić coś takiego:

Skrypt powłoki (/server/loadpath/load.sh):

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

Zapisana procedura:

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

WAŻNE: Sprawdź poprawność danych wejściowych, aby zapobiec wstrzyknięciu kodu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechowywać tablicę w tabeli?

  2. Projekt bazy danych:rejestr i weryfikacja

  3. Zapytanie SQL zwracające operand powinno zawierać 1 kolumnę

  4. Jak przekonwertować kod MySQL na instrukcję PDO?

  5. Liczba wstawionych i zaktualizowanych rekordów MYSQL