博主通过自己的方法导入大批量数据,接着换一种方法实现更快速的数据导入。
这里使用云服务器上的mysql数据库进行演示。
准备工具:
【Navicat下载地址:https://pan.baidu.com/s/1dF7nt6p】数据库图形操作界面,需要云数据库的帐号密码才能连接;
【secureCRT下载地址:https://pan.baidu.com/s/1hs2x2T2】连接Linux系统,可以便捷复制粘贴命令;
【winSCP下载地址:http://pan.baidu.com/s/1c9vvie】向linux系统传输文件,在windows与linux之间自由穿梭~;
场景:最近入手一个小项目,其中有一个FilmName. txt 文件,里面有4000多条数据,每一条数据是一部电影名字,需要全部插入数据库,
博主马上想到了使用一个for循环,写了一个java程序把所有数据插入数据库(数据库插入,要先准备好JDBC驱动,帐号,密码的配置信息)。
①可以达到目的,但是不太聪明的做法:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class test {
public static void InsertIntoDataBase(){
Connection conn = JdbcConfigInfo.getConnection();
try {
Statement stmt = conn.createStatement();
Scanner scanner = new Scanner(new FileInputStream(new File("src/FilmName.txt")));
int i = 0;
while(scanner.hasNextLine()){
stmt.execute("insert into movie(m_name)values('"+scanner.nextLine()+"')");
System.out.println("插入第:"+(i++)+"条");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
InsertIntoDataBase();
}
}
共插入4千多条数据:
使用Navicat 图形工具打开mysql数据库查看:
②可以达到目的,非常快捷的方法:
使用SecureCRT连接到云服务器的Linux系统,用winscp把文件放到云服务器的【/data】目录下
登进mysql数据库→使用my_avi数据库→展示数据表→执行sql导入语句
命令含义:【load data infile '文件所在路径' into table 表明(字段);】
mysql> load data infile '/data/FilmName.txt' into table movieInsert(m_name);
注意:本次只插入一个m_name字段,id并没有指定,所以由数据库系统决定从哪开始插入,可能并不是从1开始插入。
提示执行成功,使用Navicat查看movieInsert数据表:因为没有指定id从1开始插入,id的值自动分配,但也是按顺序插入的
当遇上几十上百M的 txt 的文件时,就可以使用此方法快速插入数据库,瞬间完成插入。