4

これはまったく可能ですか?プロシージャ内で LOAD DATA コマンドを使用できないことをいくつかの Web サイトで読みました。

4

1 に答える 1

6

いいえ、セキュリティ上の理由からできないと思います。ただし、このトリックを使用して、データベース内のテーブルに対して「LOAD DATA」クエリを生成できます (各テーブルに対して一連のクエリを返します。データをロードする前にテーブルを切り詰め、キーを無効にし、データをロードしてからキーを有効にします)。

SELECT CONCAT('TRUNCATE TABLE ',table_name,'; ALTER TABLE ',table_name,' DISABLE KEYS;    LOAD DATA INFILE "',table_name,'.txt" INTO TABLE ',table_name,' FIELDS TERMINATED BY "\\t" LINES TERMINATED BY "\\n"; ALTER TABLE ',table_name,' ENABLE KEYS; ')
FROM information_schema.`TABLES` as infs
WHERE infs.`TABLE_SCHEMA`=DATABASE()
AND infs.`TABLE_TYPE`!='VIEW';

このクエリを実行すると、結果の行はデータを転送するためのクエリになります。完全なデータベース コンテンツを別のコンテンツに移動するときに使用します。もちろん、そのクエリでは、さらに条件を使用して必要なテーブルをフィルター処理できます。それが役に立てば幸い。

于 2013-08-01T11:07:40.033 に答える