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项进行比较呢?
一年多之前 回复
qq_24743299
qq_24743299 能不能用这里的命令写个shell脚本,我刚学shell脚本,大神求教
一年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
linux shell实现从数据库中查询数据并把数据用csv格式发送邮件
$ORACLE_HOME/bin/sqlplus -S username/password@instanceName > /dev/null 2>&1 <<!!#对sqlplus作一些设置,使之只输出我们需要的文本set echo offset pagesize 0set verify offset feedback offset termout offset lin
利用Shell将MySQL数据表导出为csv文件
利用Shell将MySQL数据表导出为csv文件
Shell脚本批量添加CSV数据到MySQL
使用一般的mysql命令或者是sql脚本都可以插入数据到mysql数据表中,我这里介绍如何是Shell批量的从CSV文件中添加数据到mysql数据库中,方便数据迁徙,测试数据的添加之类的工作。
使用bash将csv文件数据读写到MySQL数据库的脚本之一
 情景: 有一个包含多个系的学生详细信息的csv文件,需要将文件的内容插入到一个数据表中,保证每一个系生成一个单独的排名列表。 学习信息表 studentdata.csv 文件的数据如下: 1,Navin M,98,CS 2,Kavya N,70,CS 3,Nawaz O,80,CS 4,Hari S,80,EC 5,Alex M,50,EC 6,Neenu J,70,EC 7
Greenplum 数据库查询导出csv文件
1.psql gp_db;进入数据库 2.\o /tmp/test.csv  设置要导出文件的目录  \o /tmp/test.csv     \o [ { filename | |command } ] 将后面的查询结果输出到文件 filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行 command.如果没有声明参数,将查询结果输出到stdout. 3
Linux 用 shell 脚本 批量 导入 csv 文件 到 mysql 数据库
导入一个 csv 文件 导入多个 csv 文件
导出(下载)数据库查询的数据生成csv文件
@SuppressWarnings({ "unchecked" }) public String downLoadCsvFile(){ System.out.println("下载csv提现对账文件"); HttpServletResponse response1 = ServletActionContext.getResponse(); System.out.print
第四步 使用shell操作数据库,导入分析并将结果导出成txt文件
在上一步中我们成功将远程服务器上备份的数据保存到了本地接下来的这一步中我们将备份的数据导入到本地的数据库,进行数据分析并导出结果。说干就干 使用存储过程写数据分析函数然后使用存储过程导出,这个使用select语句就可以做到 不多说了。 这里我们写了一个存储过程 将上会保存的表drop掉,名字叫 auto_drop_tables,这个存储过程没有参数 那么我们可以这样调用  mysql -ur
impala-shell导入导出
impala-shell导入导出 (tip:将select * from config.price_test limit 3,替换为需要导出的查询sql即可,分割符号可以自选) 参数说明:   • -q query (--query=query) 从命令行执行查询,不进入impala-shell   • -d default_db (--database=default_d
PowerShell中输出CSV文件
CSV格式文件是我们普遍使用的数据交换格式。因为CSV文件的结构非常简单,所以我们很多时候选择通过手工拼接分隔符后,输出CSV格式的文件。使用PowerShell进行数据输出时,我首先想到的也是手工输出CSV格式文件。昨天碰巧发现了Export-CSV这个cmdlet,使得CSV文件的数据输出变得更加得简单。 比如,需要输出当前所有进程的相关信息到process.csv的话,可以使用如下代码: