我对 Spring 引导相当陌生。
我目前正在编写一个小型微服务,它将数据从 CSV 文件批量加载到 MySQL 数据库表中。我知道有很多方法可以实现这一点,但我想到的方法之一是使用 MySQL LOAD DATA FILE
命令解析 csv 文件并将数据加载到数据库表中。
想知道是否有人知道我可以使用 Spring 启动 JPA 库调用 MySQL LOAD DATA
命令的方法?
任何帮助/建议不胜感激。
谢谢
找到了问题的解决方案:
将@Modifying
和@Transactional
注释添加到存储库中的方法中。下面是一个示例:
@Repository
public interface ExpenseRepository extends CrudRepository<Expense, Integer>{
@Modifying
@Transactional
@Query (value="LOAD DATA LOCAL INFILE 'C:/Users/Tester/Documents/transaction_data.txt' INTO TABLE tbl_fin FIELDS TERMINATED BY ',' IGNORE 1 LINES", nativeQuery = true)
public void bulkLoadData();
}
如果您遇到以下错误
java.sql.SQLSyntaxErrorException:此MySQL版本不允许使用的命令
不要忘记允许加载本地文件,因为它默认处于禁用状态。添加到spring.datasource.url:&allowLoadLocalInfile=true
,并使用以下命令在本地MySQL配置中启用它:SET GLOBAL local_infile = 1;