Я пытаюсь вставить данные из таблицы кустов в таблицу базы данных SQL Azure. Таблица SQL DB уже существует, и я просто хочу перезаписать в нее данные с помощью следующего кода записи Scala JDBC. Этот код записывает данные в таблицу базы данных SQL, однако меняет ее DDL (типы данных / имена столбцов). Как мне этого избежать. Я хочу простую вставку на столе.
Запись данных с помощью подключения JDBC к базе данных SQL Azure с помощью записной книжки Databricks кода Scala
Ответы (1)
Вы можете увидеть этот документ: Подключение к базам данных SQL с помощью JDBC а>. Он предоставляет вам несколько примеров о записывать данные в JDBC.
В этом разделе показано, как записывать данные в базу данных из существующей таблицы Spark SQL с именем diamonds.
%sql -- quick test that this test table exists
select * from diamonds limit 5
Следующий код сохраняет данные в таблице базы данных с именем diamonds. Использование имен столбцов, которые являются зарезервированными ключевыми словами, может вызвать исключение. В таблице в качестве примера есть столбец с именем table, поэтому вы можете переименовать его с помощью withColumnRenamed (), прежде чем отправлять его в JDBC API.
spark.table("diamonds").withColumnRenamed("table", "table_number")
.write
.jdbc(jdbcUrl, "diamonds", connectionProperties)
Spark автоматически создает таблицу базы данных с соответствующей схемой, определенной из схемы DataFrame.
Поведение по умолчанию - создать новую таблицу и выдать сообщение об ошибке, если таблица с таким именем уже существует. Вы можете использовать функцию Spark SQL SaveMode, чтобы изменить это поведение. Например, вот как добавить в таблицу больше строк:
import org.apache.spark.sql.SaveMode
spark.sql("select * from diamonds limit 10").withColumnRenamed("table", "table_number")
.write
.mode(SaveMode.Append) // <--- Append to the existing table
.jdbc(jdbcUrl, "diamonds", connectionProperties)
Вы также можете перезаписать существующую таблицу:
spark.table("diamonds").withColumnRenamed("table", "table_number")
.write
.mode(SaveMode.Overwrite) // <--- Overwrite the existing table
.jdbc(jdbcUrl, "diamonds", connectionProperties)
Надеюсь это поможет.
spark.table(s"${SqlSchema}.${SqlTbl}").write.insertInto(s"${SqlSchema}.${SqlTbl}")
производит такие же изменения в базовой схеме? - person emran   schedule 29.04.2019