.dat文件导入数据库

Posted by 林喆智 on 2021-11-30

.dat文件导入数据库

在接触了Java语言以来,我们的数据库建立或者通过自己写sql语句,或者通过导入sql文件。但是当数据量特别大的时候这两种方法的效率都不高。这时我们就会把数据存在.dat后缀的文件里,但是当我们打开navicat的时候就会发现,导入格式中并没有这个后缀。那这个后缀类型的文件该怎么导入mysql中呢,今天就来学习学习

一.序列化

序列化:用ObjectOutputStream类保存基本类型数据或对象的机制
反序列化:用ObjectlnputStream类读取基本类型数据或对象的机制

对象序列化机制:把内存中的Java对象转换成平台无关的二进制流,从而把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流进行网络传输。
反序列化机制:当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。
某个类的对象实现序列化:① 实现Serializable接口 ② 提供一个全局常量(序列版本号):private static final long serialVersionUID ③ 类中所有的属性可序列化(基本数据类型默认可序列化)
注意:
被static和transient修饰的成员变量无法序列化。
若使用自定义类作为当前序列化类的属性,则该属性所在的类也要满足①、②、③规则。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Test
//序列化:将内存中的java对象转换成二进制保存在磁盘中或通过网络传输
public void test01(){
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream("E:\\java\\data.dat"));
oos.writeObject(new String("我爱编程,我爱Java"));
oos.flush();
oos.writeObject(new Person("小王",20));
oos.flush();
oos.writeObject(new Person("小吕",18,new Account(5000)));//Account是自定义的类,作为Person类的属性
oos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(oos!=null){
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Test
//反序列化:将磁盘文件中的对象还原为内存中的一个java对象
public void test02(){
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("E:\\java\\data.dat"));
Object o = ois.readObject();
String str = (String) o;
Person p = (Person)ois.readObject();
Person p1 = (Person)ois.readObject();
System.out.println(str);
System.out.println(p);
System.out.println(p1);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if(ois!=null){
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

通过反序列化就可以将数据转化为对象存储进数据库了

二、直接使用sql语句

在网络上查到用sql语句插入

1
LOAD DATA LOCAL INFILE 'E:\\java\\data.dat' INTO TABLE tag FILEDS TERMINATED BY '::' LINES TERMINATED BY '\n' (userid,movieid,tag,timestamp)

其中 TERMINATED BY 命令表示隔开的标签,FILEDS TERMINATED BY 表示每列隔开的标签,LINES TERMINATED BY 表示每条数据隔开的标签 ,(userid,movieid,tag,timestamp) 是数据对应的字段列

今天的分享就到这里 .dat是我刚刚遇到的文件后缀 一开始还很懵,只能是活到老学到老