mysql-大批量插入数据的三种方式和使用场景

打印 上一主题 下一主题

主题 1761|帖子 1761|积分 5283

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.批量插入三种方式


  • INSERT INTO … SELECT
  • INSERT INTO … VALUES (…)
  • LOAD DATA INFILE ‘/path/to/datafile.csv’ INTO TABLE table_name
2.批量插入

2.1 INSERT INTO … SELECT

用途:从另一个表中选择数据并插入到目的表中。
语法示例:
  1. INSERT INTO target_table (column1, column2)
  2. SELECT column1, column2 FROM source_table WHERE condition;
复制代码
性能特点:

  • 非常得当批量数据复制或迁移任务。
  • 可以一次性处理大量数据,镌汰了客户端与服务器之间的通讯次数。
  • 在某些情况下,MySQL可以在服务器内部优化整个操作,避免不须要的数据传输。
  • 如果SELECT查询本身很复杂(如涉及多个JOIN、子查询等),则大概会影响团体性能。
2.2 INSERT INTO … VALUES (…)

用途:直接插入明确指定的数据值。
语法示例:
  1. INSERT INTO table_name (column1, column/XMLSchema)
  2. VALUES (value1, value2);
复制代码
性能特点:

  • 对于少量数据插入非常高效。
  • 由于值是预先知道的,以是数据库可以优化这个操作。
  • 当需要插入大量独立的行时,大概需要多次调用该语句,这会导致较高的网络延迟和事务开销。
2.3 LOAD DATA INFILE [path] INTO TABLE table_name

用途:如果数据已经在服务器上作为一个文件存在,大概可以通过网络传输到服务器上,那么使用LOAD DATA INFILE通常是最快的方法之一。
语法示例:
  1. LOAD DATA INFILE '/path/to/datafile.csv'
  2. INTO TABLE table_name
  3. FIELDS TERMINATED BY ','
  4. LINES TERMINATED BY '\n';
复制代码
优点:
相比其他方法,LOAD DATA INFILE通常要快得多,由于它直接读取文件内容并加载到表中,绕过了标准的SQL剖析器。
支持多种格式化选项来匹配输入文件结构。
缺点:
需要确保文件位于服务器当地或通过安全的方式传输至服务器。
大概需要调整MySQL的安全设置以允许LOAD DATA LOCAL INFILE。
3. LOAD DATA INFILE基本语法解释

基本语法解释
  1. LOAD DATA INFILE '/path/to/datafile.csv': 指定要导入的数据文件的位置。请注意,这里的路径是相对于服务器端的文件系统路径。
  2. INTO TABLE table_name: 指定要将数据导入的目标表。
  3. FIELDS TERMINATED BY ',': 定义字段之间的分隔符。在这个例子中,字段是以逗号 , 分隔的。
  4. LINES TERMINATED BY '\n': 定义行之间的终止符。这里每一行以换行符 \n 结束。
复制代码
进一步的设置选项
根据你的具体需求,大概还需要对命令进行一些额外的设置:
忽略某些行:
IGNORE 1 LINES; 是 LOAD DATA INFILE 命令中的一个选项,用于指示 MySQL 在导入数据时跳过文件的前几行
如果 CSV 文件包含标题行,可以使用 IGNORE number LINES 来跳过这些行。
  1. LOAD DATA INFILE '/path/to/datafile.csv'
  2. INTO TABLE table_name
  3. FIELDS TERMINATED BY ','
  4. LINES TERMINATED BY '\n'
  5. IGNORE 1 LINES;
复制代码
指定列映射:
如果 CSV 文件中的列次序与目的表不匹配,大概你想只导入部分列,可以指定列名(column1, column2, column3);:
  1. LOAD DATA INFILE '/path/to/datafile.csv'
  2. INTO TABLE table_name
  3. FIELDS TERMINATED BY ','
  4. LINES TERMINATED BY '\n'
  5. (column1, column2, column3);
复制代码
处理字符编码:CHARACTER SET utf8mb4
如果你的文件不是 UTF-8 编码,可以指定字符集:
  1. LOAD DATA INFILE '/path/to/datafile.csv'
  2. INTO TABLE table_name
  3. CHARACTER SET utf8mb4
  4. FIELDS TERMINATED BY ','
  5. LINES TERMINATED BY '\n';
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表