这似乎是该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 命令的行。