如何从 mysql 中读取并在 csv 文件中按列写入?
How to read from mysql and write column wise in csv file?
我在数据库中有不同的 table(比如 mysql)。我需要从不同的 table 中提取一些列并将其写入 csv 文件。考虑 table 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
我想在 csv 文件中写入 table 第 1 列,table 2 第 2 列,table 3 第 1 列,使空行变为空行.
output:
A,7,AB
B,8.BC
C,10,CD
null,11,DE
null,12,null
null,13,null
我可以进行从 mysql 到 csv 的基本读写,需要逻辑或代码方面的帮助才能获得上述输出。 "Looking for a generic solution for say 'n' number of columns from 'n' number of tables"。以上只是一个例子。
由于您只需要逻辑,因此这里有一些伪代码可以帮助您使用任何语言。因为我不知道你是如何导出到 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];
}
我不知道您是如何读取数据库的,但假设您使用 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;
}
以上应该可以工作..仍然是伪代码...
推荐第三方库处理CSV文件:
我在数据库中有不同的 table(比如 mysql)。我需要从不同的 table 中提取一些列并将其写入 csv 文件。考虑 table 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
我想在 csv 文件中写入 table 第 1 列,table 2 第 2 列,table 3 第 1 列,使空行变为空行.
output:
A,7,AB
B,8.BC
C,10,CD
null,11,DE
null,12,null
null,13,null
我可以进行从 mysql 到 csv 的基本读写,需要逻辑或代码方面的帮助才能获得上述输出。 "Looking for a generic solution for say 'n' number of columns from 'n' number of tables"。以上只是一个例子。
由于您只需要逻辑,因此这里有一些伪代码可以帮助您使用任何语言。因为我不知道你是如何导出到 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];
}
我不知道您是如何读取数据库的,但假设您使用 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;
}
以上应该可以工作..仍然是伪代码...
推荐第三方库处理CSV文件: