上面的要点片段显示了通用加载数据语句。上面的代码中提到了所有可用的选项。

现在让我们关注一个简​​单的示例,即简单地读取 .csv 文件并将其行插入到兼容的表中。

一个简单的例子:

LOAD DATA INFILE ‘data.csv’ INTO TABLE db.my_table

包含所有基本选项的鸟瞰示例:

不用说,您的 CSV 文件应该正确格式化才能使此语句发挥作用?.

瞧,使用上述语句,您的 .csv 行数超过 10 万行将在几秒钟内导入到您的表中。

现在,需要注意一些重要事项:

上述语句在MySql级别运行,因此源文件从客户端复制到服务器以便导入它们。
这会带来一些安全问题,我们需要确保使用此代码时客户端-服务器连接的安全。

在MySql 8.0中,使用LOCAL的能力默认设置为False。由于您的服务器和客户端应配置为允许 LOCAL,因此有些人可能会收到权限错误。

如果出现权限错误,我们需要通过启用 local_infile:
来覆盖它

SET GLOBAL local_infile = true;

注意:覆盖此标志并不是安全解决方案,而是承认接受风险,您可以参考此文档以获取更多信息。

?‍?结论

MySql LOAD DATA 语句用于在非常短的时间内读取文件。
您可以将此代码与任何后端 API 一起使用来提供源文件。
源文件可以是任何文本文件,我们在本例中使用.csv。

LOAD DATA LOCAL通过MySql将源文件复制到您的服务器,因此应在服务器端实施安全措施。

mysqlimport 实用程序在内部使用 LOAD DATA 语句。

您可以通过在语句中添加 IGNORE 1 LINES 来忽略 CSV 中的标头。

\\\"How

?参考

官方文档

","image":"http://www.luping.net/uploads/20241001/172776132566fb8baddd92a.gif","datePublished":"2024-11-08T04:52:05+08:00","dateModified":"2024-11-08T04:52:05+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何批量上传CSV文件数据到MySql表中?使用 LOAD DATA 的一种非常快速的方法。

如何批量上传CSV文件数据到MySql表中?使用 LOAD DATA 的一种非常快速的方法。

发布于2024-11-08
浏览:314

?介绍

您是否仍在使用“for”或“while”循环来迭代行并将它们插入数据库?您还在编写单独的代码来读取 .csv 文件并将其上传到 MySQL 数据库吗?

用MySQL提供的“LOAD DATA”语句对线性逻辑说“NO”。准备好更改代码以最大限度地减少行数并大幅提高性能。

MySql 提供了 LOAD DATA 语句,这是一种非常高速的方法,可以用很少的代码从文本文件中读取数据并将其插入到表中。

?什么是 LOAD DATA INFILE 语句?

根据 MySQL 的官方文档,LOAD DATA 语句用于以非常快的方式从文件中读取数据,您可以通过一次查询将此数据插入表中,而不是多次访问数据库与“INSERT INTO”查询。

MySQL还提供了一个语句->“SELECT…INTO OUTFILE”,它的作用与“LOAD DATA”的作用完全相反,即从表中读取数据到文件

MySql提供的mysqlimport实用程序内部调用服务器上的LOAD DATA语句来导入数据。

?如何使用它?

上面的要点片段显示了通用加载数据语句。上面的代码中提到了所有可用的选项。

现在让我们关注一个简​​单的示例,即简单地读取 .csv 文件并将其行插入到兼容的表中。

一个简单的例子:

LOAD DATA INFILE ‘data.csv’ INTO TABLE db.my_table

包含所有基本选项的鸟瞰示例:

不用说,您的 CSV 文件应该正确格式化才能使此语句发挥作用?.

瞧,使用上述语句,您的 .csv 行数超过 10 万行将在几秒钟内导入到您的表中。

现在,需要注意一些重要事项:

上述语句在MySql级别运行,因此源文件从客户端复制到服务器以便导入它们。
这会带来一些安全问题,我们需要确保使用此代码时客户端-服务器连接的安全。

在MySql 8.0中,使用LOCAL的能力默认设置为False。由于您的服务器和客户端应配置为允许 LOCAL,因此有些人可能会收到权限错误。

如果出现权限错误,我们需要通过启用 local_infile:
来覆盖它

SET GLOBAL local_infile = true;

注意:覆盖此标志并不是安全解决方案,而是承认接受风险,您可以参考此文档以获取更多信息。

?‍?结论

MySql LOAD DATA 语句用于在非常短的时间内读取文件。
您可以将此代码与任何后端 API 一起使用来提供源文件。
源文件可以是任何文本文件,我们在本例中使用.csv。

LOAD DATA LOCAL通过MySql将源文件复制到您的服务器,因此应在服务器端实施安全措施。

mysqlimport 实用程序在内部使用 LOAD DATA 语句。

您可以通过在语句中添加 IGNORE 1 LINES 来忽略 CSV 中的标头。

How to Bulk Upload CSV file data into MySql Table? A very fast way using LOAD DATA.

?参考

官方文档

版本声明 本文转载于:https://dev.to/elpidaguy/how-to-bulk-upload-csv-file-data-into-mysql-table-a-very-fast-way-using-load-data-c44?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-05-15
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-05-15
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-05-15
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java中的浪费唤醒:真实性或神话?在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用...
    编程 发布于2025-05-15
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-05-15
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-05-15
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-05-15
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-05-15
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-05-15
  • 哪种在JavaScript中声明多个变量的方法更可维护?
    哪种在JavaScript中声明多个变量的方法更可维护?
    在JavaScript中声明多个变量:探索两个方法在JavaScript中,开发人员经常遇到需要声明多个变量的需要。对此的两种常见方法是:在单独的行上声明每个变量: 当涉及性能时,这两种方法本质上都是等效的。但是,可维护性可能会有所不同。 第一个方法被认为更易于维护。每个声明都是其自己的语句,使其...
    编程 发布于2025-05-15
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-15
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-05-15
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-05-15
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-05-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3