Tpc-e数据集生成及导入数据库:
由于各种各样的原因,需要用到Tpc-e的某几张表中的数据,但Tpc-e基准测试自08年提出以来指导使用并生成数据集的文章也停留在15年,目前最新的c++库也可能有些许更新导致不能直接运行其解决方案,因此在这里写下我生成数据集的大致过程和遇到的全部问题。
过程描述
①首先从官方网站进行下载,它需要你注册邮箱账号,并会发送下载地址到你的邮箱,这里我用的是谷歌的邮箱。不过放心,全程都是免费的。
②下载完之后有很多编译它项目的方案,在这里我采用的是离线版的visual studio 2022进行编译和生成项目(这里不会提供相关学习资料)。在解压你下载到的文件后会得到以下文件,你需要利用你的vs打开prj/VS2010中的EGen.sln文件。
③在打开之后默认启动项目是EGenLoader,如果不是的话你需要进行手动修改,可以通过本地调试器/(下拉)配置启动项目打开以下界面,选择你的启动项目为EGenLoader
④之后,你只需要修改根目录文件夹src/EgenLoader.cpp中文件路径,然后通过“本地windows调试器”按钮或者是Ctrl+F5(VS默认快捷键)即可启动数据库文件生成,至于生成有几个表和具体有哪些数据可以通过从官网进行查阅,或者通过这个网址表格数据进行大致的了解。在完成这步之后你会得到以下效果:当然这些效果都是默认的
至于如何将得到的数据集导入数据库,我会从下篇文章中进行讲解,你也可以参照Tpc-h基准测试的操作将得到的数据集导入数据库,而关于Tpc-h基准测试的文章就相对于Tpc-e来说丰富了很多。
问题描述
我会将我遇到的几个问题都放在这里,同时给出几个关键字方便ctrl+F:
问题①:EGenUtilities.lib文件不存在
解决方案
这是因为vs2022所拥有的平台工具集是v143或者更高,而下载到的文件项目定向的平台工具集是v100,如果你是vs2010甚至更低的工具会提醒你更新,当然,现在应该是不会遇到这个问题了,因此如果你的平台工具集比v100要更高,那么在打开这个项目的时候可能vs会自动帮你重定位,如果没有你需要右键每一个项目文件然后选择“重定向”选项,一般来说一共有15个项目
之后,你可能会遇到一些代码上的问题导致你的EGenUtilities.lib文件依旧不能生成,例如:你需要将EGenVersion.cpp下的这行代码中的两个宏与双引号之间放置多一个空格。直接复制下列代码进行替换源代码即可。
void GetEGenVersionUpdateTimestamp(char* szOutput, size_t iOutputBufferLen)
{
std::strncpy(szOutput, __DATE__ " " __TIME__, iOutputBufferLen);
}
例如你还有可能遇到snprintf方法的重定义,这需要你从EGenVersion.cpp的头文件EGenStandardTypes.h中将以下定义进行更改
改成以下这样即可,直接复制替换
#if defined(_MSC_VER) && _MSC_VER<1900
# define snprintf _snprintf
#endif
问题②:EGenInputFiles下各种文件也都不存在,即没有进行生成
解决方案:
(1)这里你需要检查你的项目依赖项有无将EGenInputFiles添加进需求,你可以通过右键项目来检查项目依赖项:打开项目依赖项之后检查EGenInputFiles是否被勾选
(2)之后你需要通过同来的方式右键项目打开配置管理器确认EGenInputFiles是否被勾选,并将平台项统一改为x64(一般来说现在电脑还是x64平台的cpu架构),如果是win32的你需要通过下拉选项进行更改,通过新建来设置x64平台