1、问题原因:
由于数据库导入错误,导致数据插入不完整,其中有JSON串格式的没有插入进去,不知道哪一个库导入失败,哪一张表创建失败,所以后台项目启动失败;由于表有几百张不能去一一比对,所以产生以下解决方法。
2、解决思路:
将初始库中表的结构及数据与导入失败的库中表的结构与数据进行对比,将数据插入不完整的表或数据重新插入。
1:将所有库中的所有表统计出来,并放到以库名命名的txt文件中,表示一个库中所有的表数据;
2:将所有库中的所有表所插入的数据统计出来,并放到以库名命名的txt中,表示一个库中所有表的插入数据。
3:将整理后的所有库中的表数据整合到一个txt文本中,待后面对比使用。
4:将整理后的所有库中所有表里面的插入数据整合到一个txt文本中,待后面对比使用。
5:将整理后的两个txt文件中的数据放入Excel中,统计库名、表名、表中的数据;(其中对比时以库名+表名的形式进行对比,保证数据的唯一性)
6:表中的数据可用Excel函数VlookUP进行筛选。

3、解决方法:
1:将初始库中所有库导入linux系统,通过linux命令将所有库以及库中的表和数据导出到文本中;
导出方法:
通过

		grep --color -n "DROP TABLE IF EXISTS " DatabastName.sql >> DatabastName-Table.txt

命令将所有库中的表全部统计出来并放到以库名命名的txt文件中(因为有多少条DROP TABLE IF EXISTS语句就表示创建了多少张表,所以直接查找DROP TABLE IF EXISTS语句就可以统计有多少表被创建)。

在通过

		grep --color -n "INSERT INTO" DatabastName.sql >> DatabastName-Table-Data.txt

命令将库中所有插入命令全部统计出来并放到以库名命名的txt文件中(因为有多少条INSERT INTO语句就有多少条插入数据,所以直接查找INSERT INTO语句就可以统计有多少条插入数据)。

初始库与当前库都需要进行两中统计操作,用于后面进行对比。
结构如下图:
数据库数据分析思路记录
2:当所以库全部统计出来以后,进行数据合并操作,将初始库中所有库统计到一个文件中(可通过shell脚本进行合并):

	sed 's/^/DabataseName &/g' DabataseName-Table.txt >> table.txt
	wc -l table.txt
	将所有库统计出的表文件整合到table.txt中,并在数据前方加入库名和空格


	sed 's/^/DabataseName &/g' DabataseName-Table-Data.txt >> table-data.txt
	wc -l table-data.txt
	将所有库的表中统计出的插入数据全部整合到table-data.txt中,并在前方加入库名和空格
	显示插入的行数

数据库数据分析思路记录
3:将整合好的两个txt文件进行进一步的数据处理:
table-data.txt文件形式为:
数据库数据分析思路记录
将VALUES后面的数据去掉,得到的形式应为:

sed 's/VALUES.*//g' table-data.txt > table-data1.txt`
删除VALUES.后面的内容

数据库数据分析思路记录
table.txt文件形式为:
数据库数据分析思路记录

把table.txt中文件的数字及:删除掉:

	sed -r 's/ [0-9](.*):/ /g' table-data1.txt > table-data2.txt	
	(第一个空格之后到第二个空格之前的数字及:删除)

整理后的文件形式应为:(两个文件全部这样整理)
数据库数据分析思路记录

整理table-data.txt文件:

sed -r 's/ [0-9](.*):/ /g' table-data1.txt > table-data2.txt
(第一个空格之后到第二个空格之前的数字及:删除)
sort table-data2.txt | uniq -c > table-data3.txt
记录重复出现的行数,也就是插入同一张表中的数据

整理后形式如下:
数据库数据分析思路记录
4、将原始库和当前库全部做以上操作后,拉入excel表中进行对比:
数据库数据分析思路记录

数据条数为:
将两个txt文件内容拉到同一个excel中进行比对,通过VLOOKUP函数计算表数据条数。
数据库数据分析思路记录

相关文章: