Mysqldump: Можете ли вы изменить имя таблицы, в которую вы вставляете?
Я использую mysqldump
для переноса таблицы из одной базы данных в другую.
mysqldump -h host -u user -p password -e --single-transaction --no-create- info --default-character-set=utf8 --complete-insert --result-file=thisisaresult db table
Мне было интересно, однако, если есть способ изменить имя таблицы, в которую вы вставляете? Например, мне бы хотелось, чтобы это вставлялось в table_staging
или что-то в этом роде. Возможно ли это, или мне придется просто использовать sed
?
Ответы
Ответ 1
Я не думаю, что это возможно при сбрасывании данных, потому что могут быть ссылки FK на таблицу, которую вы меняете.
Если нет ссылок FK на таблицу, которую вы хотите изменить, можно просто отредактировать полученный файл дампа:
CREATE TABLE `old_table_name`
становится
CREATE TABLE `new_table_name`
Моя рекомендация состояла бы в том, чтобы сбрасывать данные, повторно импортировать их в вашу новую базу данных, а затем запускать изменения для переименования вашей таблицы.
Ответ 2
После создания файла дампа mysql
вы можете сделать следующее:
sed -i 's/`old-table-name`/`new-table-name`/g' old-table-name.dump
Команда sed
будет искать и заменять имя старой таблицы новым именем таблицы из файла дампа mysql.
Ответ 3
Вы можете изменить имя таблицы "на лету", когда вы создаете дамп, используя Unix sed.
# create dump of mytable, renaming it to mytable_new
$ mysqldump -umyuser -pmypass -hmyhost mydb mytable |\
sed -e 's/`mytable`/`mytable_new`/'| gzip -c > mydb_mytable_new.dump.gz
# restoring in another database:
$ gunzip -c mydb_mytable_new.dump.gz | mysql -umyuser2 -pmypass2 -hmyhost2 mydb2