Вы должны сделать это на PHP? Вы можете легко сделать это в терминале с некоторыми базовыми функциями (не нужно создавать какие-либо файлы).
Две команды, и все готово:
echo 'create database foo2' | mysql -uroot
mysqldump --skip-triggers -uroot foo | mysql -uroot foo2
Копирует foo
в новую базу данных foo2
Обратите внимание, что возможно pipe в php .. но .. на самом деле, вы должны просто сделать это в shell (IMO).
Edit:
Упс, почему-то я думал, что вы хотели триггеры. Отредактировано выше, чтобы включить --skip-triggers
Редактировать 2:
«Трубопровод» относится к трассе stdout
и stdin
.
Windows поддерживает каналы. Вышеуказанные команды работают для меня в Windows.
Однако я не могу заставить работать трубопровод через PHP с Windows (по крайней мере, для mysql
). Это как потоки из proc_open
игнорируют мой ввод.
Таким образом, альтернативой было бы взять команды, которые я предоставил выше, поместить их в файл .bat
и посмотреть, можно ли вызвать этот скрипт с помощью system()
Окончательное редактирование :
Вам нужно будет провести некоторое исследование, поскольку я не могу объяснить каждую мелочь. Вы ссылались на документацию system()
, на которую я указывал? Позволяет вызывать системные команды ..
Мое предложение состоит в том, чтобы вы сделали основной скрипт, назовите его bla.bat
:
@echo off
echo create database foo2 | mysql -uroot
mysqldump --skip-triggers -uroot foo | mysql -uroot foo2
Если он находится в той же папке, что и ваш скрипт, то ваш скрипт может сделать это:
<?php
system('cmd.exe /C ' . dirname(__FILE__).'\\bla.bat');
Виола. БД скопирована.