Как ВСТАВИТЬ базу данных SQL Azure из Azure Databricks в Python

Поскольку pyodbc не может быть установлен в базы данных Azure, я пытаюсь использовать jdbc для вставки данных в базу данных SQL Azure с помощью Python, но я могу найти для этого образец кода.

jdbcHostname = "xxxxxxx.database.windows.net"
jdbcDatabase = "yyyyyy"
jdbcPort = 1433
#jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user={3};password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase, username, password)

jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

pushdown_query = "(INSERT INTO test (a, b) VALUES ('val_a', 'val_b')) insert_test" 

Посоветуйте, пожалуйста, как написать код вставки на Python. Спасибо.


person sauceishere    schedule 01.04.2019    source источник


Ответы (3)


Поскольку pyodbc не может быть установлен в базы данных Azure

На самом деле кажется, что вы можете установить pyodbc в блоках данных.

%sh    
apt-get -y install unixodbc-dev
/databricks/python/bin/pip install pyodbc

Для получения дополнительной информации вы можете обратиться к этому ответу и к этому блог.

person Joy Wang    schedule 01.04.2019
comment
@jay wang, спасибо, сработало, и дополнительно мне нужно было добавить '% sh curl packages.microsoft .com / keys / microsoft.asc | Добавление ключа apt - curl packages.microsoft.com/config/ubuntu/16.04/ prod.list ›/etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA = Y apt-get install msodbcsql17 apt-get -y install unixodbc-dev sudo apt-get install python3-pip -y pip3 install --upgrade pyodbc 'on [ссылка] (datathirst.net/blog/2018/10/12/) - person sauceishere; 02.04.2019

Если можно добавить, вы также сможете использовать фрейм данных Spark для вставки в SQL Azure. Просто используйте строку подключения, которую вы получаете из Azure SQL.

connectionString = "<Azure SQL Connection string>"

data = spark.createDataFrame([(val_a, val_b)], ["a", "b"])

data.write.jdbc(connectionString, "<TableName>", mode="append")
person Jon    schedule 01.04.2019

Копирование поддержки на Джона ... Это то, что я использовал для записи данных из фрейма данных Azure databricks в базу данных SQL Azure:

    Hostname = "YOUR_SERVER.database.windows.net"
    Database = "YOUR_DB"
    port = 1433
    UN = 'YOUR_USERNAME'
    PW = 'YOUR_PASSWORD'
    Url = "jdbc:sqlserver://{0}:{1};database={2};user={3};password= {4}".format(Hostname, Port, Database, UN, PW)

   df.write.jdbc(Url, "schema.table", mode="append")
person cromastro    schedule 23.10.2019