解析MYD、MYI、FRM文件的方法
P粉604848588
2023-08-25 16:14:30
<p>我在这个论坛和其他地方读了几篇帖子,但仍然无法读取一些包含我想要导入到SQL Server的数据的MYD/MYI/FRM文件。</p>
<ul>
<li>我停止了客户端位置的MySQL服务,并复制了所有文件(与我们在SQL Server上的操作方式相同)。</li>
<li>我在我的Windows 10 PC上安装了最新的MySQL ODBC连接器、MySQL引擎和MySQL Workbench。引擎正在运行,ODBC连接器已配置了用户名和密码。使用Workbench,我成功登录了。</li>
<li>我创建了一个名为MyTest的数据库,它创建了一个C:\ProgramData\MySQL\MySQL Server 8.0\Data\mytest文件夹。</li>
<li>我停止了MySQL服务,并将MyData.MYD、MyData.MYI和MyData.FRM复制到mytest文件夹中。</li>
<li>我重新启动了MySQL服务。</li>
</ul>
<p>但是,如果我在Workbench或使用MySQL 8.0命令行客户端运行"Select * from mytest.MyData"查询,它会一直提示表mytest.MyData不存在。现在,我读到可能适合运行CHOWN命令,但是我不知道在Windows系统中语法是否会有所不同,以及这个命令是否可以直接从命令提示符中执行。</p>
<p>任何帮助将不胜感激。谢谢!</p>
旧版本的MySQL允许您在MyISAM表中这样操作,但是MySQL 8.0引入了一个全新的“数据字典”实现,它是一个在内部维护的元数据库,并且对InnoDB比MyISAM有偏好。因此,我相信随意移动文件的方式不再像以前那样有效。要将表从一个实例移动到另一个实例,您应该正确地执行导出和导入步骤。
对于InnoDB,您可以使用可传输表空间。至少这样您不必执行完整的数据导入,但是需要比仅仅复制文件多几个步骤。
P.S.:我多年来一直没有使用MyISAM。我更喜欢我的数据库支持ACID属性,而MyISAM不支持任何ACID属性。