Partager via


Utiliser Azure Databricks pour interroger SQL Server

Cet article explique comment connecter Azure Databricks à Microsoft SQL Server pour lire et écrire des données.

Important

La documentation de fédération de requête héritée a été supprimée et peut ne pas être mise à jour. Les configurations mentionnées dans ce contenu ne sont pas officiellement approuvées ou testées par Databricks. Si Lakehouse Federation prend en charge votre base de données source, Databricks recommande d’utiliser cela à la place.

Configurer une connexion à SQL Server

Dans Databricks Runtime 11.3 LTS et versions ultérieures, vous pouvez utiliser le sqlserver mot clé pour utiliser le pilote inclus pour la connexion à SQL Server. Lorsque vous utilisez des DataFrames, utilisez la syntaxe suivante :

Python

remote_table = (spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") # optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") # (if schemaName not provided, default to "dbo")
  .load()
)

Langage de programmation Scala

val remote_table = spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") // optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") // (if schemaName not provided, default to "dbo")
  .load()

Lorsque vous utilisez SQL, spécifiez sqlserver dans la clause USING et passez des options lors de la création d’une table, comme illustré dans l’exemple suivant :

DROP TABLE IF EXISTS sqlserver_table;
CREATE TABLE sqlserver_table
USING sqlserver
OPTIONS (
  dbtable '<schema-name.table-name>',
  host '<host-name>',
  port '1433',
  database '<database-name>',
  user '<username>',
  password '<password>'
);

Utiliser le pilote JDBC hérité

Dans Databricks Runtime 10.4 LTS et ci-dessous, vous devez spécifier le pilote et les configurations à l’aide des paramètres JDBC. L’exemple suivant interroge SQL Server à l’aide de son pilote JDBC. Pour plus d’informations sur la lecture, l’écriture, la configuration du parallélisme et le pushdown des requêtes, voir Bases de données de requête à l’aide de JDBC.

Python

driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

database_host = "<database-host-url>"
database_port = "1433" # update if you use a non-default port
database_name = "<database-name>"
table = "<table-name>"
user = "<username>"
password = "<password>"

url = f"jdbc:sqlserver://{database_host}:{database_port};database={database_name}"

remote_table = (spark.read
  .format("jdbc")
  .option("driver", driver)
  .option("url", url)
  .option("dbtable", table)
  .option("user", user)
  .option("password", password)
  .load()
)

Langage de programmation Scala

val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

val database_host = "<database-host-url>"
val database_port = "1433" // update if you use a non-default port
val database_name = "<database-name>"
val table = "<table-name>"
val user = "<username>"
val password = "<password>"

val url = s"jdbc:sqlserver://{database_host}:{database_port};database={database_name}"

val remote_table = spark.read
  .format("jdbc")
  .option("driver", driver)
  .option("url", url)
  .option("dbtable", table)
  .option("user", user)
  .option("password", password)
  .load()