我在ubuntu环境中有一个DB2 db。包含所有表的空数据库已存在。现在我想导入1000个相应的*.ixf文件到数据库中。另外,我对每个文件都有一个* .msg文件。
有人知道如何做到这一点吗?谢谢,Jassin
发布于 2018-06-06 03:34:15
出于速度原因,您不必使用import,而可以使用Db2 load实用程序。只有当您已经知道文件很小并且有足够的事务日志记录容量,或者表存在但不存在索引,并且希望导入操作也创建索引时,才使用导入。
解决方案取决于您的脚本编写技能,以及您希望运行作业的频率。无论使用哪种技术,您都需要知道哪个文件填充了哪个表。
使用shell脚本(例如,使用bash),Db2在Linux上是非常可编程的。这是一项值得学习的技能。
您还可以用perl、python或任何脚本语言编写此类内容的脚本。
最简单(也是最慢)的方法是使用Db2 LOAD实用程序连续注入文件。
更复杂的方法包括并行使用Db2 LOAD实用程序,具体取决于可用的内核数量和可用的I/O带宽。例如,如果您有32个核心,则可能有20个并发加载作业,每个作业都加载一个单独的表,而子任务具有自己的数据库连接。除非您的容器位于具有大量I/O带宽的SAN上,否则这种方法没有任何好处。
无论是串行加载还是并行加载,都应该检查每个命令退出代码,并能够从故障点重新启动,并验证加载的行数是否与每个IXF文件中的行数匹配(包括所有被拒绝的行)。
发布于 2018-06-06 06:19:09
你有第一个文件吗?如果有,那么您可以执行db2move导入或db2move加载,然后RDBMS会将所有这些数据放入数据库中。
ixf文件包含表定义和数据。
msg文件包含有关导出时间的信息。执行db2move导入后,您将使用有关导入的信息重新生成这些文件。
https://stackoverflow.com/questions/50707096
复制相似问题