Скрипт дампа таблиц базы данных Bitrix (структура + данные) mysqldumprequire($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Context;
use Bitrix\Main\Application;
$request = Context::getCurrent()->getRequest();
$connection = Application::getInstance()->getConnection();
$result = array_values($connection->query("SHOW TABLES")->fetchAll());
if ($request->getPost('table')) {
$output = '';
foreach ($request->getPost('table') as $table) {
$showTableQuery = "SHOW CRE ATE TABLE " . $table;
$showTableResult = $connection->query($showTableQuery)->fetchAll();
foreach($showTableResult as $showTableRow) {
$output .= "\n\n" . $showTableRow["Cre ate Table"] . ";\n\n";
}
$selectQuery = "SEL ECT * FR OM " . $table;
$rows = $connection->query($selectQuery)->fetchAll();
foreach ($rows as $row) {
$tableColumnArray = array_keys($row);
$tableValueArray = array_values($row);
$output .= "\nINSERT INTO $table (";
$output .= "" . implode(", ", $tableColumnArray) . ") VALUES (";
$output .= "'" . implode("','", $tableValueArray) . "');\n";
}
//dump($output);
}
$fileName = $_SERVER['DOCUMENT_ROOT']. '/database_backup_on_' . date('y-m-d') . '.sql';
$fileHandle = fopen($fileName, 'w+');
fwrite($fileHandle, $output);
fclose($fileHandle);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($fileName));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fileName));
ob_clean();
flush();
readfile($fileName);
unlink($fileName);
}
?>
<!DO CTYPE html>
<ht ml>
<head>
<title>Создать бекап базы</title>
<sc ript src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></sc ript>
<li nk href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
</head>
<body>
<br />
<div class="container">
<div class="row">
<h2 align="center">Создать бекап базы</h2>
<br />
<fo rm method="post" id="export_form">
<h3>Выберите таблицы для бекапа</h3>
<?php
foreach($result as $table)
{
$table = array_values($table);
?>
<div class="checkbox">
<label><input type="checkbox" class="checkbox_table" name="table[]" value="<?=$table[0];?>" /> <?=$table[0];?></label>
</div>
<?php
}
?>
<div class="form-group">
<input type="submit" name="submit" id="submit" class="btn btn-info" value="Export" />
</div>
</form>
</div>
</div>
</body>
</html>
<sc ript>
$(document).ready(function() {
$('#submit').click(function() {
var count = 0;
$('.checkbox_table').each(function() {
if($(this).is(':checked')) {
count = count + 1;
}
});
if(count > 0) {
$('#export_form').submit();
} else {
alert("Выберите как минимум одну таблицу для экспорта");
return false;
}
});
});
</sc ript>
|
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».