如何从mysql中读取并在csv文件中明确写入列?

时间:2015-02-13 07:31:29

标签: java jdbc collections

我在数据库中有不同的表(比如mysql)。我需要从不同的表中提取一些列并将其写入csv文件中。考虑表1

A 1
B 2
C 3
table 2       table 3
X 7           AB A1
Y 8           BC B2
Z 10          CD C3
U 11          DE D4
V 12          
W 13

我想从表2中的表1,2nd col写第1列,在csv文件中写表3中的第1列,使空行变为空。

output: 
A,7,AB
B,8.BC
C,10,CD
null,11,DE
null,12,null
null,13,null 

我可以从mysql到csv进行基本的读写操作,需要逻辑或代码的帮助才能得到上面的输出。 "寻找一个通用的解决方案来说明' n'来自' n'的列数表的数量"。以上就是一个例子。

3 个答案:

答案 0 :(得分:0)

因为你只需要这里的逻辑是一些伪代码,它可以帮助你使用你正在使用的任何语言。由于我不知道你是如何导出到csv的,所以我觉得它非常通用。

arr1 = select column1 from table1;
arr2 = select column2 from table2;
arr3 = select column1 from table3;
max = isBigger(arr1.length, arr2.length);
max = isBigger(max, arr3.length);
for(i=0; i<max; i++)
{
 if(arr1[i]=="") arr1[i]=null;
 if(arr2[i]=="") arr2[i]=null;
 if(arr3[i]=="") arr3[i]=null;
 print arr1[i] + "," + arr2[i] + "," + arr3[i];
}

答案 1 :(得分:0)

我不知道你是如何阅读你的数据库但是假设你是用JDBC做的:

    ResultSet tableAReusltSet= null;
    ResultSet tableBReusltSet= null;
    ResultSet tableCReusltSet= null;
    List<PseudeContainer> container = new ArrayList<>();
    while (tableAReusltSet.next()) { 
        PseudeConteiner ps = new PseudoContainer();
        ps.col1 = tableAReusltSet.getString("ColumnName");
        container.add(ps);
    }

    int i = 0;
    while (tableBReusltSet.next()) { 
        if(container.size() <= i){
             container.add(new PseudeContainer());
        }
        container.get(i).col2 = tableBReusltSet.getString("ColumnName");
    }

    i = 0;
    while (tableBReusltSet.next()) { 
        if(container.size() <= i){
             container.add(new PseudeContainer());
        }
        container.get(i).col2 = tableBReusltSet.getString("ColumnName");
    }

// ..现在你有一个可以编写的集合

public PseudeContainer {
    String col1 = null;
    String col2 = null;
    String col3 = null;

}

上面应该工作..仍然是伪代码...

答案 2 :(得分:0)

推荐第三方库来处理CSV文件:

Apache Commons CSV

Open CSV