当前位置: 首页 > 面试题库 >

MySQL和Java是否可以在没有文件(即内存)的情况下“加载数据”?

余歌者
2023-03-14
问题内容

我正在优化将约10TB数据导入MySQL数据库的过程。目前,我可以在当前笔记本电脑上约14分钟内导入2.9GB(+
0.8GB索引)。该过程包括读取数据文件(Oracle“ .dat”导出),解析数据,将数据写入CSV文件并在其上执行“ LOAD DATA LOCAL”
sql命令。

是否可以提高导入速度(无需更改硬件)?有没有一种方法可以删除将文件写入文件系统并让MySQL再次读取它的步骤。是否可以将内存中的数据直接流传输到MySQL(例如,通过JDBC驱动程序)?

预先非常感谢,Joerg。


问题答案:

从MySQL Connector / J JDBC驱动程序版本5.1.3开始,您似乎可以使用com.mysql.jdbc.Statement
****
连接InputStream引用

setLocalInfileInputStream()
方法,在Java代码内部,用于将内存格式的字符串/文本“管道”到“ LOAD DATA INFILE”调用。这意味着您 不必
写出并从内存中重新读取临时文件。请参阅:

http://dev.mysql.com/doc/refman/5.1/zh-CN/connector-j-reference-
implementation-notes.html(页面底部)

此帖子还概述了该过程:

http://jeffrick.com/2010/03/23/bulk-insert-into-a-mysql-
database

O’reilly制作了一个包含MySQL /
JDBC性能gem的PDF。

还提到了它在Hadoop中的用法(高级Java主题)。

希望对您有帮助。

干杯

丰富



 类似资料:
  • 我正在试验OSGi条件权限机制。更具体地说,我试图使用org.osgi.service.condpermadmin.BundleSignerCondition来限制哪些包可以启动。我所拥有的文档指出,为了使用该权限,我必须使用org.osgi.framework.trust.repositories框架配置属性指定到JKS密钥库的路径。但是,同一文档提到该属性中提到的JKS不能有密码。所以问题是:

  • 问题内容: 我正在处理可处理大量Excel 2007文件的应用程序,并且正在使用OpenPyXL进行此操作。OpenPyXL有两种不同的读取Excel文件的方法:一种是将整个文档立即加载到内存中的“常规”方法,另一种是使用迭代器逐行读取的方法。 问题是,当我使用迭代器方法时,我没有得到任何文档元数据,例如列宽和行/列数,而我 确实 需要此数据。我假设此数据存储在顶部附近的Excel文档中,因此不必

  • 是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误

  • 在Android中使用和iOS中使用下载存储文件,是否仍然在暗中使用下载uri方法,即在uri末尾使用不可猜测的标记? 我的要求禁止我们向世界公开这样的URL,所以问题是: null

  • 问题内容: 我处理非常大的二进制文件(每个文件从几个GB到多个TB)。这些文件以旧格式存在,并且升级需要将标头写入文件的FRONT。我可以创建一个新文件并重写数据,但是有时这可能需要很长时间。我想知道是否有更快的方法来完成此升级。该平台仅限于Linux,我愿意使用低级功能(ASM,C,C ++)/文件系统技巧来实现这一目标。基本库是Java,JNI是完全可以接受的。 问题答案: 没有本机执行此操作

  • (是的,这是hacky,可能不是最佳实践,但它是体积最小的解决方案) 我有一个涉及几个jar的项目——一个可运行的启动器、一个服务器、一个服务器的包装器和服务器的插件。 启动器通过启动一个新的未连接的进程、一个子进程或者只是实例化它来运行包装器,这取决于配置。对于这个问题来说,这应该不重要。 包装器使用URLClassLoader来加载服务器jar并启动它,这工作正常。 在启动服务器之前,包装器会