Compartilhar via


Inserir um dataframe do Python em uma tabela SQL

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Este artigo descreve como inserir um dataframe do Pandas em um Banco de Dados SQL usando o pacote pyodbc no Python.

Pré-requisitos

  • Azure Data Studio. Para instalar, confira Baixar e instalar o Azure Data Studio.

  • Siga as etapas em Bancos de dados de exemplo do AdventureWorks para restaurar a versão de OLTP do banco de dados de exemplo do AdventureWorks para sua versão do SQL Server.

    Confirme se o banco de dados foi restaurado corretamente consultando a tabela HumanResources.Department:

    USE AdventureWorks;
    SELECT * FROM HumanResources.Department;
    

Instalar pacotes do Python

  1. No Azure Data Studio, abra um novo bloco de anotações e conecte-se ao kernel do Python 3.

  2. Selecione Gerenciar Pacotes.

    Gerenciar pacotes

  3. No painel Gerenciar Pacotes, selecione a guia Adicionar Novo.

  4. Para cada pacote a seguir, insira o nome do pacote, clique em Pesquisare em Instalar.

    • pyodbc
    • pandas

Criar um arquivo CSV de exemplo

Copie o texto a seguir e salve em um arquivo chamado department.csv.

DepartmentID,Name,GroupName,
1,Engineering,Research and Development,
2,Tool Design,Research and Development,
3,Sales,Sales and Marketing,
4,Marketing,Sales and Marketing,
5,Purchasing,Inventory Management,
6,Research and Development,Research and Development,
7,Production,Manufacturing,
8,Production Control,Manufacturing,
9,Human Resources,Executive General and Administration,
10,Finance,Executive General and Administration,
11,Information Services,Executive General and Administration,
12,Document Control,Quality Assurance,
13,Quality Assurance,Quality Assurance,
14,Facilities and Maintenance,Executive General and Administration,
15,Shipping and Receiving,Inventory Management,
16,Executive,Executive General and Administration

Criar uma nova tabela do banco de dados

  1. Siga as etapas em Conectar a um SQL Server para se conectar ao banco de dados do AdventureWorks.

  2. Crie uma tabela chamada HumanResources.DepartmentTest. A tabela SQL será usada para a inserção do dataframe.

    CREATE TABLE [HumanResources].[DepartmentTest](
    [DepartmentID] [smallint] NOT NULL,
    [Name] [dbo].[Name] NOT NULL,
    [GroupName] [dbo].[Name] NOT NULL
    )
    GO
    

Criar um dataframe usando um arquivo CSV

Use o pacote do Python pandas para criar um dataframe, carregar o arquivo CSV e carregar o dataframe na nova tabela SQL, HumanResources.DepartmentTest.

  1. Conecte-se ao kernel Python 3.

  2. Cole o código a seguir em uma célula de código, atualizando o código com os valores corretos para server, database, username, password e o local do arquivo CSV.

    import pyodbc
    import pandas as pd
    # insert data from csv file into dataframe.
    # working directory for csv file: type "pwd" in Azure Data Studio or Linux
    # working directory in Windows c:\users\username
    df = pd.read_csv("c:\\user\\username\department.csv")
    # Some other example server values are
    # server = 'localhost\sqlexpress' # for a named instance
    # server = 'myserver,port' # to specify an alternate port
    server = 'yourservername' 
    database = 'AdventureWorks' 
    username = 'username' 
    password = 'yourpassword' 
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
    cursor = cnxn.cursor()
    # Insert Dataframe into SQL Server:
    for index, row in df.iterrows():
         cursor.execute("INSERT INTO HumanResources.DepartmentTest (DepartmentID,Name,GroupName) values(?,?,?)", row.DepartmentID, row.Name, row.GroupName)
    cnxn.commit()
    cursor.close()
    
  3. Execute a célula.

Confirme os dados no banco de dados

Conecte-se ao kernel do SQL e ao banco de dados do AdventureWorks e execute a seguinte instrução SQL para confirmar se a tabela foi carregada com êxito com dados do dataframe.

SELECT count(*) from HumanResources.DepartmentTest;

Resultados

(No column name)
16

Próximas etapas