필자는 4 개의 특정 테이블을 제외하고 내 스키마 (몇백 개의 테이블이있는)의 모든 테이블을 TRUNCATE하기위한 쿼리 (또는 일련의)를 찾고 있습니다. 그 일을 어떻게 하죠? 감사!MySQL 스키마에서 대부분의 테이블을 TRUNCATE 할 수 있습니까?
1
A
답변
1
저는 여러분이 가장 좋아하는 언어로 스크립트를 작성해야한다고 생각합니다. information_schema db에서 스키마의 테이블 목록을 가져온 다음 반복하여 반복하여 원하는대로자를 수 있습니다.
쿼리가 될 것 같은 뭔가 :
SELECT table_name FROM information_schema.tables WHERE table_schema = 'test' AND table_name NOT IN ('table1', 'table2');
편집가 : 여기에 펄을 사용하는 예제입니다 :
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("some_dsn");
my $sth = $dbh->prepare(q{SELECT table_name FROM information_schema.tables WHERE table_schema = 'test' AND table_name NOT IN ('table1', 'table2')});
$sth->execute();
$sth->bind_columns(\my $table_name);
while($sth->fetch) { $dbh->do(q{TRUNCATE TABLE } . $table_name) }
0
또 다른 방법은 당신이 새로운 스키마에 그 네 개의 테이블을 복사 한 다음 일 수 있었다 원래 데이터베이스 스키마를 삭제하십시오.
0
* 괜찬아 한 라이너
for i in `mysql -e "show tables MY_DB" | grep -vE "(table1|table2)"`; do mysql -e"TRUNCATE ${i}" MY_DB; done
흥미. 그래도 정확히 반복 할 수 있습니까? – Monster