Soho外贸常用网站,高校网站模板,网站建设网络推广方案,百度互联网营销MySQL LOAD DATA 一、背景二、模拟生成用户信息三、加载到mysql表3.1、建表语句3.2 加载数据3.3、查看结果 一、背景
现在有个需求是将用户信息存入student.data文件中#xff0c;在现在load到数据库中
二、模拟生成用户信息
假设用户信息#xff0c;包含姓名#xff0c;… MySQL LOAD DATA 一、背景二、模拟生成用户信息三、加载到mysql表3.1、建表语句3.2 加载数据3.3、查看结果 一、背景
现在有个需求是将用户信息存入student.data文件中在现在load到数据库中
二、模拟生成用户信息
假设用户信息包含姓名性别年龄分数创建时间更新时间逻辑删除等字段现模拟数据生成代码如下
// 方法用于写入数据到文件public static void writeDataToFile(String filePath, String name, String gender, int age, double score, LocalDateTime createdDate, LocalDateTime updatedDate, boolean isDeleted) {DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);// 使用三元运算符确保布尔值被转换为整数 (0 或 1)String data String.format(%s,%s,%d,%.2f,%s,%s,%d,name, gender, age, score,createdDate.format(formatter),updatedDate.format(formatter),isDeleted ? 1 : 0);try (BufferedWriter writer new BufferedWriter(new FileWriter(filePath, true))) {writer.write(data);writer.newLine(); // 写入新行} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {String filePath D:\\document\\test\\data\\student.data;// 示例数据writeDataToFile(filePath, 张三, 男, 20, 88.5, LocalDateTime.now(), LocalDateTime.now(), false);writeDataToFile(filePath, 李四, 女, 22, 92.0, LocalDateTime.now(), LocalDateTime.now(), false);writeDataToFile(filePath, 王五, 男, 21, 75.0, LocalDateTime.now(), LocalDateTime.now(), true);}代码还是比较简单没有什么难点运行后生成的student.data数据如下图所示有点类似于csv文件 三、加载到mysql表
3.1、建表语句
DROP TABLE IF EXISTS student_info;
CREATE TABLE student_info (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,gender VARCHAR(10) NOT NULL,age INT NOT NULL,score DECIMAL(5, 2) NOT NULL,created_date DATETIME NOT NULL,updated_date DATETIME NOT NULL,is_deleted TINYINT(1) NOT NULL DEFAULT 0
);3.2 加载数据
LOAD DATA INFILE D:/document/test/data/log.data
INTO TABLE student_info
FIELDS TERMINATED BY ,
ENCLOSED BY
LINES TERMINATED BY \n
(name, gender, age, score, created_date, updated_date, is_deleted);LOAD DATA INFILE ‘D:/document/test/data/log.data’指定要从哪个文件加载数据。这个文件路径是本地文件系统中的路径。 注意确保 MySQL 服务器有权限访问此文件路径并且路径的分隔符如 \ 和 /适合所使用的操作系统。
FIELDS TERMINATED BY ‘,’定义字段之间的分隔符。在这个例子中字段是由逗号,分隔的。
ENCLOSED BY ’ 定义字段值的引号字符。在这个例子中字段值是由双引号括起来的。例如如果字段值是 “value”则会包括引号。
LINES TERMINATED BY ‘\n’ 定义每行数据的结束符。在这个例子中每行数据以换行符\n结束。不同操作系统可能使用不同的行结束符例如 Windows 使用 \r\n。
(name, gender, age, score, created_date, updated_date, is_deleted)指定文件中每行数据的字段顺序表明数据将被加载到表中的哪个列中。这里假设数据文件的每一行按照这个顺序排列。
注意 如果加载数据时报错1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement这说明mysql没有这个文件夹的读取权限打开mysql的配置文件,windows下是my.ini
添加如下配置
secure_file_privD:/document/test/data/3.3、查看结果
SELECT * from student_info