2009-04-07 9 views

答えて

6

あなたは

SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 

を作成し、各レコードの文字列のクエリを実行して結果セットを反復処理することができ、でも、

SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 

でテーブル名を取得し、TRUNCATEを行うことができます。

2

はい。基本的には、データベース内のすべてのテーブルのリストを取得してから、そのリストを反復処理し、各エントリに対してTRUNCATE TABLE $tablenameを発行する必要があります。

これは、まともな十分な実装のようになります。あなたが権限を持っている場合Truncate all tables in a MySQL database

12

それを行うための最も簡単な方法、である:

 
DROP DATABASE dbName; 
CREATE DATABASE dbName; 
USE DATABASE dbName; 

代替がトリガーにinformation_schemaデータベースを照会することで、ストアド・ルーチン(プロシージャとファンクション)、表、ビューなどを個別にドロップして個別にドロップできます。

この後も、カスタムのデフォルトの文字セットと照合順序が設定されている可能性があるため、データベースはまだ新しく作成されたものと同じ状態にならない場合があります。それを変更するにはALTER DATABASEを使用してください。

機能が追加されるにつれて(イベント...)、このように多くの作業が行われます。だから実際には、データベースを完全に空にする唯一の方法は、それを削除して再作成することです。

+0

あなたは、テーブルの構造 –

+1

それは完全に質問に答えて、彼は、同じ名前を持つ空のデータベースを望んでいる以外まあ話題スターターは何も言わなかったを失うことになります。 間違った仮定をするのは意味がありません。そのため、この回答には+1があります。 – Flavius

+0

ユーザが 'CREATE DATABASE'権限を持たない場合、それらはスタックされます。 –

4

データベース内のすべてのテーブルのリスト($databaseName)を取得し、すべてをループし、それぞれTRUNCATE TABLEを適用することができます。

$result = mysqli_query($link, "SHOW TABLES IN `$databaseName`"); 
while ($table = mysqli_fetch_array($result)) { 
    $tableName = $table[0]; 
    mysqli_query($link, "TRUNCATE TABLE `$databaseName`.`$tableName`"); 

    if (mysqli_errno($link)) echo mysqli_errno($link) . ' ' . mysqli_error($link); 
    else echo "$tableName was cleared<br>"; 
} 

これにより、データベース内のすべてのテーブルの内容がクリアされ、構造が維持されます。

+1

詳細については、[編集]をクリックしてください。検索可能なコンテンツが含まれていないため、コード専用と「試してください」という回答は(推奨されません)(// meta.stackexchange.com/questions/196187)、誰かが「これを試してみる」理由を説明していません。私たちはここで知識のためのリソースとなるよう努力しています。 – Mogsdad

2

これは私のために働いた。

mysql -u < DB-USER > -p<DB-PASS> --silent --skip-column-names -e "SHOW TABLES" <DB-NAME> | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -u < DB-USER > -p< DB-PASS > -v < DB-NAME > 
関連する問題