これはまったく可能ですか?プロシージャ内で LOAD DATA コマンドを使用できないことをいくつかの Web サイトで読みました。
質問する
9124 次
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 に答える