Java或Scala将从数据库中检索多个列作为一行
我想在一行中检索数据库中的多个列 例如:-Java或Scala将从数据库中检索多个列作为一行,java,scala,apache-spark,Java,Scala,Apache Spark,我想在一行中检索数据库中的多个列 例如:- CustomerId,AccountNumber 1,AW0000001 1 AW0000001 我编写的Scala代码正在向新行输出列值 例如:- CustomerId,AccountNumber 1,AW0000001 1 AW0000001 代码:- object SparkSQLServer { class DbRow extends java.util.HashMap[java.lang.String,Object] {
CustomerId,AccountNumber
1,AW0000001
1
AW0000001
我编写的Scala代码正在向新行输出列值
例如:-
CustomerId,AccountNumber
1,AW0000001
1
AW0000001
代码:-
object SparkSQLServer {
class DbRow extends java.util.HashMap[java.lang.String,Object] {
}
def main(args: Array[String]): Unit = {
Logger.getLogger("org").setLevel(Level.WARN)
Logger.getLogger("akka").setLevel(Level.WARN)
val conf = new SparkConf().setMaster("local[2]").setAppName("SparkProducerMSSQL")
val sc = new SparkContext(conf)
val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
val url = "jdbc:sqlserver://localhost;user=admin;password=oracle;database=AdventureWorks2014"
val username = "admin"
val password = "oracle"
var connection:Connection=null
Class.forName(driver)
connection=DriverManager.getConnection(url,username,password)
val statement=connection.createStatement()
val resultSet=statement.executeQuery("select top 10 CustomerID,AccountNumber from AdventureWorks2014.dbo.Customer")
resultSet.setFetchSize(10);
val columnnumber=resultSet.getMetaData().getColumnCount.toInt
val objcommand=("select top 10 CustomerID,AccountNumber from AdventureWorks2014.dbo.Customer",connection)
//var rows: Vector[DbRow]=Vector.empty
while (resultSet.next())
{
//val row=new DbRow
var i=0.toInt;
for (i <- 1 to columnnumber.toInt)
{
val columnvalue=resultSet.getString(i);
val columnname=resultSet.getMetaData().getColumnName(i)
//row.put(columnname,resultSet.getObject(i))
val test4=resultSet.getObject(i)
var list = new java.util.ArrayList[String]()
list.add(resultSet.getObject(i).toString())
println(list)
}
//rows = rows :+ row
//print(row)
// print(rows.toString().replace("Vector","").replace(")","~"))
//print(rows.toString().replace("Vector",""))
// val test=sc.parallelize(List(row.toString().replace("{","").replace("}","~")))
//val lines=test.flatMap(x=>x.split("~"))
//lines.collect().foreach(println)
//print(row)
//
//println(resultSet)
}
connection.close()
}
}
对象SparkSQLServer{
DbRow类扩展了java.util.HashMap[java.lang.String,Object]{
}
def main(参数:数组[字符串]):单位={
Logger.getLogger(“org”).setLevel(Level.WARN)
Logger.getLogger(“akka”).setLevel(Level.WARN)
val conf=new SparkConf().setMaster(“本地[2]”)。setAppName(“sparkProducermsql”)
val sc=新的SparkContext(配置)
val driver=“com.microsoft.sqlserver.jdbc.SQLServerDriver”
val url=“jdbc:sqlserver://localhost;用户=管理员;密码=oracle;数据库=AdventureWorks2014”
val username=“admin”
val password=“oracle”
变量连接:连接=null
Class.forName(驱动程序)
connection=DriverManager.getConnection(url、用户名、密码)
val语句=connection.createStatement()
val resultSet=statement.executeQuery(“从AdventureWorks2014.dbo.Customer中选择前10名CustomerID、AccountNumber”)
结果集setFetchSize(10);
val columnnumber=resultSet.getMetaData().getColumnCount.toInt
val objcommand=(“从AdventureWorks2014.dbo.Customer”中选择前10名CustomerID、AccountNumber),连接)
//变量行:Vector[DbRow]=Vector.empty
while(resultSet.next())
{
//val行=新数据库行
var i=0.5分;
对于(i x.分割(“~”)
//line.collect().foreach(println)
//打印(行)
//
//println(结果集)
}
连接。关闭()
}
}
移动
“var list=new java.util.ArrayListString”
和
“println(列表)”
外循环
var list = new java.util.ArrayList[String]()
for .. {
}
println(list)
最好使用StringBuilder
StringBuilder sb=new StringBuilder(100);
for {
sb.append(resultSet.getObject(i).toString());
sb.append(",");
}
println(sb.toString())
Java的完整示例:
final String url = "jdbc:sqlserver://localhost;user=admin;password=oracle;database=AdventureWorks2014";
final String username = "admin";
final String password = "oracle";
final String sql = "select top 10 CustomerID,AccountNumber from AdventureWorks2014.dbo.Customer";
try (Connection connection = DriverManager.getConnection(url,username,password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
final ResultSetMetaData metaData = resultSet.getMetaData();
final int columnCount = metaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
if (i > 1)
System.out.print(',');
System.out.print(metaData.getColumnName(i));
}
System.out.println();
while (resultSet.next()) {
for (int i = 1; i <= columnCount; i++) {
if (i > 1)
System.out.print(',');
System.out.print(resultSet.getString(i));
}
System.out.println();
}
}
final String url=“jdbc:sqlserver://localhost;用户=管理员;密码=oracle;数据库=AdventureWorks2014”;
最终字符串username=“admin”;
最终字符串password=“oracle”;
最后一个字符串sql=“从AdventureWorks2014.dbo.Customer中选择前10名CustomerID、AccountNumber”;
try(Connection-Connection=DriverManager.getConnection(url、用户名、密码);
语句Statement=connection.createStatement();
ResultSet ResultSet=statement.executeQuery(sql)){
final ResultSetMetaData metaData=resultSet.getMetaData();
final int columnCount=metaData.getColumnCount();
对于(int i=1;i 1)
系统输出打印(',');
System.out.print(metaData.getColumnName(i));
}
System.out.println();
while(resultSet.next()){
对于(int i=1;i 1)
系统输出打印(',');
System.out.print(resultSet.getString(i));
}
System.out.println();
}
}