Ref:https://issues.apache.org/jira/browse/SPARK-11953

In Spark 1.3.1 we have 2 methods i.e.. CreateJdbcTable and InsertIntoJdbc

They are replaced with write.jdbc() in Spark 1.4.1


CreateJDBCTable allows to perform CREATE TABLE ... i.e... DDL on the table
followed by INSERT (DML)

InsertIntoJDBC will avoid performing DDL on the table and INSERT (DML)


In Spark 1.4.1 both of the above technologies are replaced by write.jdbc.


When we want to Insert data into the table that already exists, I am
passing  SaveMode equals to Append.


When I say SaveMode equals to Mode, I would like to by pass

1) tableExists check

2) Avoid Spark CREATE table in a scenario when there is no Table available
in the Table


Please let me know if you think differently.

Regards
Shiv



def jdbc(url: String, table: String, connectionProperties: Properties):
Unit = {
val conn = JdbcUtils.createConnection(url, connectionProperties)

try {
var tableExists = JdbcUtils.tableExists(conn, table)

if (mode == SaveMode.Ignore && tableExists)
{ return }

if (mode == SaveMode.ErrorIfExists && tableExists)
{ sys.error(s"Table $table already exists.") }

if (mode == SaveMode.Overwrite && tableExists)
{ JdbcUtils.dropTable(conn, table) tableExists = false }

// Create the table if the table didn't exist.
if (!tableExists)
{ val schema = JDBCWriteDetails.schemaString(df, url) val sql = s"CREATE
TABLE $table ($schema)" conn.prepareStatement(sql).executeUpdate() }

} finally
{ conn.close() }

JDBCWriteDetails.saveTable(df, url, table, connectionProperties)
}

Reply via email to