-1
我想在一行中檢索數據庫中的多列。Java或Scala從數據庫中檢索多列爲一行
實施例: -
CustomerId,AccountNumber
1,AW0000001
的Scala代碼我被寫出來吐涎列值到新的一行。
實施例: -
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()
}
}