将mysql表从一个数据库转储导入到独立的数据库中

将mysql表从一个数据库转储导入到独立的数据库中

这似乎是该mysql命令包含的一个相当明显的功能,但我似乎无法在手册页的任何地方找到它。我的问题是:给定生成的数据库转储,mysqldump ... <databasename> > file.sql您是否可以将包含的所有表(以及仅表)导入到单独的数据库中?我可能忽略了一些显而易见的东西,我有点菜鸟,抱歉。

答案1

当然:

mysql -uusername -ppassword -hdbserver someotherdatabasename < file.sql

可能会有些困惑,因为您使用的mysqldump是提取,但mysql使用的是加载。请注意,命令输出的mysqldump是 SQL 语句,因此您可以直接将其输入到命令行命令中mysql。还是我误解了您的问题?

答案2

如果只想转储表结构,请使用 创建转储文件mysqldump -d ...。这将排除转储中的所有数据,只留下结构和您可能选择包含的任何其他详细信息(触发器等)。

如果您无法处理已获得的转储,则可以使用一些文本解析来找到解决方法。除了带换行符的引号行之外,传递文件grep -v '^INSERT'将删除将数据放入数据库的所有行。

如果您确实有更复杂的条目,其中文本中有换行符,那么您将必须使用进一步的正则表达式过滤器来解析出无效 SQL 命令的行。

相关内容