qq_24743299
2017-01-10 07:19
采纳率: 33.3%
浏览 2.1k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • oyljerry 2017-01-10 09:36

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

    点赞 评论
  • Android开发-CXY 2017-01-10 11: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'"

    点赞 评论
  • baluzju 2017-01-10 15: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
    
    点赞 评论

相关推荐 更多相似问题