前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让其加载数据文件 (CSV) 变得更快

让其加载数据文件 (CSV) 变得更快

原创
作者头像
贺春旸的技术博客
发布2024-04-29 16:45:43
960
发布2024-04-29 16:45:43

使用 LOAD DATA INFILE 将任何大型 CSV 文件加载到 MySQL 服务器是一个非常耗时的过程,因为它是单线程的,而且也是单个事务,它无法充分利用到多核CPU的处理能力,已成为瓶颈。

现在你可以通过甲骨文的mysqlsh客户端,让其加载数据文件 (CSV) 变得更快!

https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-8.0.36-linux-glibc2.17-x86-64bit.tar.gz

内部工作流程 :

  • util.importTable 将分析输入的数据文件
  • util.importTable 将大文件分成若干块
  • util.importTable 将通过并行线程把数据块更新到目标 MySQL 服务器上

使用

代码语言:javascript
复制
 MySQL JS > util.importTable("/data/mysql/tmp/sbtest1.csv", {
                  schema: "test", table: "sbtest1", 
                  dialect: "csv-unix", skipRows: 0, 
                  showProgress: true, fieldsOptionallyEnclosed: true, 
                  fieldsTerminatedBy: ",", linesTerminatedBy: "\n",
                  fieldsEnclosedBy: '"',threads: 8, bytesPerChunk: "1G"
            }) 

含义:

util.importTable: 这是MySQL Shell中的一个函数,用于从文件导入数据到数据库表中。

"/data/mysql/hechunyang1/tmp/sbtest1.csv": 这是要导入的CSV文件的路径。

{}: 这是一个JavaScript对象,包含了导入数据的配置选项。

schema: "test": 指定目标数据库的模式(或称为数据库)名称,这里是"test"。

table: "sbtest1": 指定目标表的名称,这里是"sbtest1"。

dialect: "csv-unix": 指定了CSV文件的格式,这里是Unix风格的CSV格式。这个参数告诉MySQL Shell如何解析CSV文件的结构。

skipRows: 0: 指定跳过的行数,这里是0,表示不跳过任何行。

showProgress: true: 指定是否显示导入进度,这里设置为true,会显示导入进度信息。

fieldsOptionallyEnclosed: true: 指定字段是否用引号包围,这里设置为true,表示字段可以用引号包围。

fieldsTerminatedBy: ",": 指定字段之间的分隔符,这里是逗号(,),表示字段之间由逗号分隔。

linesTerminatedBy: "\n": 指定行终止符,这里是换行符(\n),表示每行数据以换行符结束。

fieldsEnclosedBy: '"': 指定字段的引号符号,这里是双引号(""),表示字段可以被双引号包围。

threads: 8: 指定用于导入数据的线程数,这里是8个线程。

bytesPerChunk: "1G": 指定每个数据块的大小,这里是1GB。导入过程中,文件会被分成多个数据块进行处理。

sbtest1.csv文件是(1.96 GB,1000万行记录) ,导入耗时: 3 分 16 秒

而如果直接使用LOAD DATA INFILE命令导入数据

导入耗时:5 分 31 秒

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 LOAD DATA INFILE 将任何大型 CSV 文件加载到 MySQL 服务器是一个非常耗时的过程,因为它是单线程的,而且也是单个事务,它无法充分利用到多核CPU的处理能力,已成为瓶颈。
  • 内部工作流程 :
  • 使用
  • 含义:
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档


http://www.vxiaotou.com