2009-04-02 32 views

cevap

1

tek tek görüşlerini dışlamak için seçenek --ignore-table ile Mysqldump kullanabilirsiniz. Veya mysqldump'ı kullanın ve görünümleri bir uygulamayla/el ile kaldırın. - ayrıca ve, (son kez kontrol) görünümleri aslında iki kez oluşturulur - bir zamanlar bir tablo olarak, daha sonra tablo şu anki uygulama Mysqldump görünümleri olmadan döker oluşturmayacaktır

grep -v "CREATE VIEW" db.dump > db-without-views.dump 
+1

yüzden, damperli görünüm başına birden fazla satır yazıyor sakının Belirtilen ilk satır hariç, dökümünüzde hatalar bırakacaktır –

+1

@ZsoltSzilagy ne dedi? --Görünüm tabloları işe yarıyor, ancak geri kalanlar kırık bir ihracata yol açıyor. – DougW

+7

Bu neden doğru olarak işaretlendi? –

24

: grep bir seçenek olabilir düşürülür ve bir görünümle değiştirilir. Bu davranış bir değişiklik yapılmadığı sürece Yani sadece, "CREATE VIEW" komutunu filtre olamaz.

Ancak mysqldump veritabanı adından sonra parametreleri olarak tablolar listesini alacak. Böyle bir şey:

mysqldump -ujoe -pmysecret joesdb posts tags comments users 
+0

+1: Bunu seviyorum – vietean

+0

Tabloları My'dan sorgulayabilirsiniz. SQL'in bilgi şeması: 'mysqldump the_db_i_want $ (mysql -Ne" TABLE_NAME TABLE SELECT_SCHEMA.TABLES TABLE_SCHEMA = 'the_db_i_want' VE TABLE_TYPE = 'BASE TABLE' ") –

9

bir veritabanından tek bir tabloyu geri bir veritabanı

mysqldump -uUSERNAME -pPASWORD DATABASE TABLE_NAME --host=HOST_NAME > c:\TABLE_NAME.sql 

tek tablo backuping

mysql -uUSERNAME -pPASSWORD DATABASE --host=HOST_NAME < c:\TABLE_NAME.sql 
16

Dökümü için DB'den tek bir görünüm yok saymak için dökümü :

( )

Dökümü için Db birden fazla görünümü görmezden için:

mysqldump -uusrname -ppwd -h hostname --ignore-table=db.view1 --ignore-table=db.view2 db > db.sql

NOT: dökümü kullanım --ignore-table seçenek birden çok kez için birden çok görünüm görmezden.

0

Kullanımı

php mysqldump.php mydatabase myusername mypassword > myoutputfile.sql 

Bu benim bir oldukça eski komut dosyasıdır. Birisi, mysql işlevlerine erişiminiz yoksa bunu PDO kullanmak için kolayca uyarlayabilir.

<?php 

if (is_array($argv) && count($argv)>3) { 
    $database=$argv[1]; 
    $user=$argv[2]; 
    $password=$argv[3]; 
} 
else { 
    echo "Usage php mysqdump.php <database> <user> <password>\n"; 
    exit; 
} 

$link = mysql_connect('localhost', $user, $password); 


if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$source = mysql_select_db('$database', $link); 
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';"; 
$result = mysql_query($sql); 
$views=array(); 
while ($row = mysql_fetch_row($result)) { 
    $views[]="--ignore-table={$database}.".$row[0]; 
} 
//no views or triggers please 
echo passthru("mysqldump -u root --password=\"$password\" $database --skip-triggers ".implode(" ",$views)); 

?> 
-1

deneyin: sözdizimi

mysqldump -h drupdbsvr -u elt_drupal_dba -pdrupdev-654! clms_admin views_display views_view view_argument view_exposed_filter view_filter view_sort view_tablefield view_view > /opt/dbdump/clms_admin_view.sql 

: -

mysqldump -h hostname -u database_user_name database_password database_name table_name1 table_name2 > path/sql_file.sql 
3

Güncelleme @ ladieu senaryosu:

  • Kabuk argümanlar düzgün ile şifreleri izin öncelenirler kabuklu karacigerler
  • yerine MySQL özgü fonksiyonların PDO kullanma
  • (bazen bir IP görünüyor mysql_ * fonksiyonları ile DNS karşı çözülmesi ve böylece bir hata tetiklemek üzere) komut dosyası kullanarak lokal olarak (ilave konak parametresi)
  • kullanıldığını
  • kaldırıldı varsayımını kodlamayı önlemek için "-r" seçeneği
  • isim çıktı dosyası düzenler.ben tarafından tespit kullanıcı ile bağlanmak ve veritabanı>
<?php 

if (is_array($argv) && count($argv)>3) { 
    $host=($argv[1]); 
    $user=($argv[2]); 
    $password=($argv[3]); 
    $database=($argv[4]); 

} 
else { 
    echo "Usage php mysqdump.php <host> <user> <password> <database>\n"; 
    exit; 
} 

echo 'connecting to'.$host; 

$pdo=new PDO("mysql:host=$host;dbname=$database",$user,$password); 

//$link = mysql_connect($host, $user, $password); 

//$source = mysql_select_db($database, $link); 
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';"; 
$result = $pdo->query($sql); 
$views=array(); 
while ($row = $result->fetch()) { 
    $views[]="--ignore-table={$database}.".$row[0]; 
} 
//no views or triggers please 
$host=escapeshellarg($host); 
$user=escapeshellarg($user); 
$password=escapeshellarg($password); 
$database=escapeshellarg($database); 
echo passthru("mysqldump -h $host -u $user --password=\"$password\" $database --skip-triggers ".implode(" ",$views)." -r $database.sql"); 

Enjoy dökümü istiyorum" neresinde böylece sql

  • yeniden düzenlenmiş parametreler!