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
SQL Server Management Studio para restaurar o banco de dados de exemplo na Instância Gerenciada de SQL do Azure.
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
No Azure Data Studio, abra um novo bloco de anotações e conecte-se ao kernel do Python 3.
Selecione Gerenciar Pacotes.
No painel Gerenciar Pacotes, selecione a guia Adicionar Novo.
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
Siga as etapas em Conectar a um SQL Server para se conectar ao banco de dados do AdventureWorks.
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.
Conecte-se ao kernel Python 3.
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()
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