数据库导出的csv文件有三列信息,分为表名,字段名和索引名,需要对比从两个数据库导出的csv文件,分别输出他们的相同部分和不同部分到新的csv文件中
你这种再用shell就有点麻烦了,可以用python等脚本,它可以比较轻松的实现
需求不明确,如果有多列索引,csv是什么样子?不同部分输出到2个文件还是同一中?
下面是一个最简单的例子:
旧表定义
baluzju $ cat oldDD.csv
table1,col1,idx1
table1,col2,idx2
table1,col3,idx3
新表定义
baluzju $ cat newDD.csv
table1,col1,idx1
table1,col3,idx3x
table1,col4,idx4
table2,col2,idx2
相同的行
baluzju $ diff oldDD.csv newDD.csv -y | grep -v "|" | grep -v ">" | grep -v "<" | awk '{print $1}'
table1,col1,idx1
不同的行part1
baluzju $ diff oldDD.csv newDD.csv | grep ">" | awk -F">" '{print $2}'
table1,col3,idx3x
table1,col4,idx4
table2,col2,idx2
不同的行part2
baluzju $ diff oldDD.csv newDD.csv | grep "<" | awk -F"<" '{print $2}'
table1,col2,idx2
table1,col3,idx3
MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"