2 qq 24743299 qq_24743299 于 2017.01.10 15:19 提问

怎么使用shell解析数据库导出的csv文件 5C

数据库导出的csv文件有三列信息,分为表名,字段名和索引名,需要对比从两个数据库导出的csv文件,分别输出他们的相同部分和不同部分到新的csv文件中

3个回答

baluzju
baluzju   2017.01.10 23:39

需求不明确,如果有多列索引,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
qq_24743299
qq_24743299 怎么样可以忽略idx项进行比较呢?
11 个月之前 回复
qq_24743299
qq_24743299 能不能用这里的命令写个shell脚本,我刚学shell脚本,大神求教
11 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.01.10 17:36

你这种再用shell就有点麻烦了,可以用python等脚本,它可以比较轻松的实现

CodeFarmerCXY
CodeFarmerCXY   2017.01.10 19:28

MySQL中导入导出数据时,使用CSV格式时的命令行参数

在导出数据时使用:select ... from ... [where ...] into outfile '/tmp/data.csv' $MYSQL_CSV_FORMAT;

在导入数据时使用:load data infile '/tmp/data.csv' into table ... $MYSQL_CSV_FORMAT;

CSV标准文档:RFC 4180

MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!