MySQL的LOAD DATA LOCAL INFILE是一个用于将本地文件数据加载到数据库表中的功能。
LOAD DATA LOCAL INFILE 和 source 都是 MySQL 中用于导入数据的命令,但它们之间有一些区别。
LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name
source /path/to/script.sql
需要注意的是,LOAD DATA LOCAL INFILE 默认是被禁用的,需要在 MySQL 配置文件中设置 local_infile=1
并重启 MySQL 服务后才能正常使用。
总结来说,LOAD DATA LOCAL INFILE 主要用于将本地文件中的数据导入到数据库表中,而 source 主要用于执行包含多条 SQL 语句的脚本文件。它们的使用场景和语法略有不同,需要根据具体需求选择适合的命令进行数据导入。
LOAD DATA LOCAL INFILE在数据导入方面具有高效、灵活的优点,但需要注意安全性和访问权限等问题。在使用时需谨慎,并根据实际需求考虑其适用性。
不改配置,会报以下错误: ERROR 1148 (42000): The used command is not allowed with this MySQL version
sudo sh -c "echo 'local-infile=1' >> /home/xj/software/docker/mysql/config/my.cnf"
-- 创建表
use tmp;
drop table if exists tmp_products;
CREATE TABLE tmp_products (
id INT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10, 2)
);
我们先创建一个表csv的表,文本格式,后缀是csv
vim /home/xj/software/docker/mysql/log/bak/test.csv
id,name,price
1,Product A,10.99
2,Product B,19.99
3,Product C,5.99
mysql -uroot -piPwd000000 --local-infile=1
use tmp;
select * from tmp_products;
LOAD DATA LOCAL INFILE '/var/log/mysql/bak/test.csv'
INTO TABLE tmp_products
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
select * from tmp_products;