#mysql
#mysql — сервер #mysql
Вопрос:
Я использую 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:
После создания mysql
файла дампа вы могли бы сделать следующее:
sed -i 's/`old-table-name`/`new-table-name`/g' old-table-name.dump
sed
Команда выполнит поиск и заменит старое имя таблицы новым именем таблицы из файла дампа mysql.
Комментарии:
1. Я использовал это, но я также добавил ` вокруг имени таблицы, чтобы убедиться, что это не данные где-то в таблице. так что тогда это выглядело бы примерно так:
sed -i 's/`old-table-name`/`new-table-name`/g' old-table-name.dump
2. Спасибо, это потрясающе
3. Я думаю, что это может быть очень медленно с дампом в 4 ГБ:(
4. Для пользователей Mac Os X эта команда завершится ошибкой при использовании предоставляемого ОС sed (
/usr/bin/sed
). Вы можетеbrew install gnu-sed
использоватьgsed
, и это будет работать так, как описано.
Ответ №2:
Вы можете изменить имя таблицы на лету при создании дампа с использованием 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
Ответ №3:
Я не думаю, что это возможно при сбросе данных, потому что могут быть ссылки FK на таблицу, которую вы изменяете.
Если нет ссылок FK на таблицу, которую вы хотите изменить, то можно просто вручную отредактировать результирующий файл дампа:
CREATE TABLE `old_table_name`
Становится
CREATE TABLE `new_table_name`
Моя рекомендация заключалась бы в сбросе данных, повторном импорте их в вашу новую базу данных, а затем запуске изменений для переименования вашей таблицы.
Комментарии:
1. Вам также необходимо отредактировать
INSERT INTO
инструкцию.