首页 > 解决方案 > MySQL - 使用 INFILE 时将变量插入列

问题描述

我正在用 Java 编写一个应用程序,我需要将文本文件插入到 MySQL 表中。这些文件可能有数十 GB。出于性能原因,我决定使用 LOCAL INFILE 来执行此操作。我遇到的问题是我还需要同时插入一个基于变量的值。

假设下表。

foo_string | bar_int

假设以下数据

a
bb
cccc

我首先从另一个表中获取一个值的 id 并将其存储在本地 int 中。然后我去执行以下查询以插入来自 myvalues.txt 的值

statement.executeUpdate( "LOAD DATA LOCAL INFILE 'myvalues.txt' INTO TABLE  mytable FIELDS TERMINATED BY '' LINES TERMINATED BY '\\n'");

上述工作按预期工作,但我还想同时在第二个(bar_int)列中插入一个值。做这个的最好方式是什么?

标签: javamysql

解决方案


您可以使用列列表,然后使用SET子句:

LOAD DATA LOCAL INFILE 'myvalues.txt'
     INTO TABLE mytable
     FIELDS TERMINATED BY '' LINES TERMINATED BY '\\n'
     (foo_string)
     SET bar_int = 1;

这会将文件中的一列读入列foo_string中。它设置bar_int为特定值。


推荐阅读