我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转储文件中的新表名搜索并替换旧表名.
使用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)
我认为转储数据时不可能,因为可能存在对您正在更改的表的 FK 引用。
如果您想要更改的表没有 FK 引用,则可以手动编辑生成的转储文件:
CREATE TABLE `old_table_name`
Run Code Online (Sandbox Code Playgroud)
成为
CREATE TABLE `new_table_name`
Run Code Online (Sandbox Code Playgroud)
我的建议是转储数据,将其重新导入到新数据库中,然后运行更改来重命名表。
| 归档时间: |
|
| 查看次数: |
12573 次 |
| 最近记录: |