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

A Q*_*ker 12 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
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有办法更改您插入的表的名称?例如,我想要插入table_staging或类似的东西.这可能,或者我将不得不使用sed

sin*_*469 17

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

sed -i 's/`old-table-name`/`new-table-name`/g' old-table-name.dump
Run Code Online (Sandbox Code Playgroud)

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

  • 我使用了这个,但我还在表名周围添加了`,以确保它不是表格中的数据.所以它看起来像这样:`sed -i's/\`old-table-name \`/ \`new-table-name \`/ g'old-table-name.dump` (2认同)

dli*_*ink 9

使用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
Run Code Online (Sandbox Code Playgroud)


Mik*_*ell 1

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

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

CREATE TABLE `old_table_name`
Run Code Online (Sandbox Code Playgroud)

成为

CREATE TABLE `new_table_name`
Run Code Online (Sandbox Code Playgroud)

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