17. oktober 2006 - 17:45
Der er
6 kommentarer og 1 løsning
gemme database struktur og indhold som fil
hvordan er det muligt at gemme alle tables i en database med struktur og alt indhold, ligesom i phpmyadmin? her skal filen bare gemmes et sted på serveren
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
17. oktober 2006 - 19:46
#2
det er en tom side
17. oktober 2006 - 20:00
#3
jeg bruger følgende script.. du skal ændre i linie 76 & 77 hvor dine egne database informatinoner skal ind, og i linie 100 hvor du angiver hvad filen der gemmes skal hedde.
17. oktober 2006 - 20:00
#4
<? $backup_structure=TRUE; $backup_data=TRUE; $empty_table=FALSE; $drop_table=TRUE; function write2file($filename,$content){ $handle=fopen($filename, 'w'); // Write $somecontent to our opened file. fwrite($handle, $content); //echo "Ba"; fclose($handle); //echo "$filename has been created"; } function backupstructure($tablename){ $ress = mysql_query("describe `".$tablename."`"); $a.="CREATE TABLE `".$tablename."` (\n"; while ($rows = mysql_fetch_row($ress)) { //foreach ($rows as $rowval) if ($rows) { // echo $rowval .' | '; if(strlen($rows[4])==0){ $row4=""; }else{ $row4="default '$rows[4]'"; } if($rows[3]=="PRI"){ $primarykey="PRIMARY KEY (`$rows[0]`)"; } $a .="`$rows[0]` $rows[1] $rows[5] $row4,\n"; } } $a.=$primarykey."\n);"; return $a; } function backup($table){ global $con; $a =""; $sql= ("select * from $table"); $result = mysql_query($sql) or die("SQL ERROR:<hr>".$sql); while($rs = mysql_fetch_object($result)) { $b = ("insert into `$table` values ("); foreach($rs as $tmp1 => $key){ $key=str_replace("\n","<br>",$key); $key=str_replace("\r","<br>",$key); $b.= "'".addslashes($key)."',"; } $a.= substr($b,0,strlen($b)-1).");\n"; } mysql_free_result($result); $a."\n"; return $a; } $con = @mysql_connect('localhost', 'root', 'pass') or die("<center><b>Connection Error</b></center>"); $current_database = 'min_db'; $trs = mysql_list_tables($current_database,$con); $tables=array(); for($i=0; $i < mysql_num_rows($trs); $i++) { $output.="\n\n-- backup af ".mysql_tablename($trs,$i)."\n\n"; if($empty_table==TRUE){ $output.="TRUNCATE TABLE `".mysql_tablename($trs,$i)."`;\n"; } if($drop_table==TRUE){ $output.="DROP TABLE IF EXISTS `".mysql_tablename($trs,$i)."`;\n"; } if($backup_structure==TRUE){ $output.=backupstructure(mysql_tablename($trs,$i))."\n\n"; } if($backup_data==TRUE){ $output.= backup(mysql_tablename($trs,$i)); } } //echo $output; $filename="db_backup.sql"; write2file($filename,$output); ?>
18. oktober 2006 - 16:06
#5
for noget andet i phpmyadmin bliver dette også tilføjet i hver create table ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci; 'default charset' går vel ind under 'collate'? så den er vel unødvendig?
18. oktober 2006 - 19:22
#6
supermand69: Ingen ide.. jeg har brugt ovenstående script i noget nær et år, og det har fungeret glimrende :) jeg sletter i øvrigt altid de oplysninger du skriver, da det som regel sættes default i databasen.
18. oktober 2006 - 19:49
#7
radion > mange tak for hjælpen, men der er bare et problem med dit script og det er at nøgler ikke bliver gemt, kun primary har hentet inspiration hos dig :) <? mysql_connect('localhost', 'xxx', 'xxx'); $DB = 'db'; $boundary = "\n-- ----------------------------------------------------------\n\n"; $str = "-- MySQL Dump\n-- Database: $DB\n-- Genereringstid: ".date("d/m-y H:i", time())."\n$boundary"; $get_table = mysql_query("SHOW TABLE STATUS FROM $DB"); while($table_arr = mysql_fetch_assoc($get_table)) { $tmp_arr = array(); $field_arr = array(); $get_column = mysql_query("SHOW COLUMNS FROM $DB.".$table_arr['Name']); while($column_arr = mysql_fetch_assoc($get_column)) { if($column_arr['Null']) $column_arr['Default'] = "default NULL"; else $column_arr['Default'] = "NOT NULL default '".$column_arr['Default']."'"; $tmp_arr[] = " ".$column_arr['Field']." ".$column_arr['Type']." ".$column_arr['Default']." ".$column_arr['Extra']; $field_arr[] = $column_arr['Field']; } $key_arr = array(); $get_index = mysql_query("SHOW INDEX FROM ".$table_arr['Name']." FROM $DB"); while($index_arr = mysql_fetch_assoc($get_index)) { if($index_arr['Key_name'] == 'PRIMARY') $key_arr['PRIMARY KEY'][''][$index_arr['Seq_in_index']] = $index_arr['Column_name']; elseif($index_arr['Non_unique']) $key_arr['KEY'][$index_arr['Key_name']][$index_arr['Seq_in_index']] = $index_arr['Column_name']; else $key_arr['UNIQUE KEY'][$index_arr['Key_name']][$index_arr['Seq_in_index']] = $index_arr['Column_name']; } if($key_arr) { foreach($key_arr as $key_type => $v) { foreach($key_arr[$key_type] as $key_name => $v) { $key_str = $key_type; if($key_name) $key_str .= " $key_name"; ksort($key_arr[$key_type][$key_name]); $column_name_arr = array_values($key_arr[$key_type][$key_name]); $tmp_arr[] = " $key_str (".implode(',', $column_name_arr).")"; } } } $str .= "CREATE TABLE ".$table_arr['Name']." (\n".implode(",\n", $tmp_arr)."\n) ENGINE=".$table_arr['Engine']." COLLATE=".$table_arr['Collation'].";\n"; $get_row = mysql_query("SELECT * FROM $DB.".$table_arr['Name']); if(mysql_num_rows($get_row)) { $data_arr = array(); $str .= "\nINSERT ".$table_arr['Name']." (".implode(',', $field_arr).") VALUES\n"; while($row_arr = mysql_fetch_row($get_row)) { $tmp_arr = array(); foreach($row_arr as $value) { if(is_numeric($value)) $tmp_arr[] = $value; else $tmp_arr[] = "'$value'"; } $data_arr[] = "(".implode(',', $tmp_arr).")"; } $str .= implode(",\n", $data_arr).";\n$boundary"; } } echo '<textarea style="width:100%; height:100%">'.$str.'</textarea>'; ?>
Vi tilbyder markedets bedste kurser inden for webudvikling