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