Mysqldump:你能改变你插入的表的名字吗?

时间:2011-11-07 21:17:08

标签: 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

3 个答案:

答案 0 :(得分:15)

创建mysql转储文件后,您可以执行以下操作:

sed -i 's/`old-table-name`/`new-table-name`/g' old-table-name.dump

sed命令将使用mysql转储文件中的新表名搜索并替换旧表名。

答案 1 :(得分:8)

使用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

答案 2 :(得分:1)

我认为在转储数据时不可能,因为可能存在对正在更改的表的FK引用。

如果您希望更改的表没有FK引用,则可以手动编辑生成的转储文件:

CREATE TABLE `old_table_name`

变为

CREATE TABLE `new_table_name`

我的建议是转储数据,将其重新导入新数据库,然后运行更改以重命名表。

相关问题