Запись данных с использованием соединения JDBC в базу данных SQL Azure с записной книжкой Scala code - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь вставить данные из таблицы кустов в таблицу базы данных SQL Azure.Таблица SQL DB уже существует, и я просто хочу перезаписать в нее данные, используя следующий код записи Scala JDBC.Этот код записывает данные в таблицу БД SQL, однако он меняет свой DDL (типы данных / имена столбцов).Как я могу избежать этого.Я хочу простую вставку на стол.

enter image description here

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете увидеть этот документ: Подключение к базам данных 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)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...