Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
In dit artikel wordt beschreven hoe u een Pandas-dataframe invoegt in een SQL-database met behulp van het Pyodbc-pakket in Python.
Prerequisites
SQL Server Management Studio voor het herstellen van de voorbeelddatabase naar Azure SQL Managed Instance.
Azure Data Studio. Zie Azure Data Studio downloaden en installeren om deze te installeren.
Volg de stappen in AdventureWorks-voorbeelddatabases om de OLTP-versie van de AdventureWorks-voorbeelddatabase te herstellen voor uw versie van SQL Server.
U kunt controleren of de database correct is hersteld door een query uit te voeren op de tabel HumanResources.Department :
USE AdventureWorks; SELECT * FROM HumanResources.Department;
Python-pakketten installeren
Open in Azure Data Studio een nieuw notebook en maak verbinding met de Python 3-kernel.
Selecteer Pakketten beheren.
Selecteer in het deelvenster Pakketten beheren het tabblad Nieuwe toevoegen .
Voer voor elk van de volgende pakketten de pakketnaam in, selecteer Zoeken en selecteer Vervolgens Installeren.
- pyodbc
- pandas
Een CSV-voorbeeldbestand maken
Kopieer de volgende tekst en sla deze op in een bestand met de naam 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
Een nieuwe databasetabel maken
Volg de stappen in Verbinding maken met een SQL Server om verbinding te maken met de AdventureWorks-database.
Maak een tabel met de naam HumanResources.DepartmentTest. De SQL-tabel wordt gebruikt voor de gegevensframeinvoeging.
CREATE TABLE [HumanResources].[DepartmentTest]( [DepartmentID] [smallint] NOT NULL, [Name] [dbo].[Name] NOT NULL, [GroupName] [dbo].[Name] NOT NULL ) GO
Een gegevensframe laden vanuit het CSV-bestand
Gebruik het Python-pakket pandas om een dataframe te maken, het CSV-bestand te laden en het gegevensframe vervolgens in de nieuwe SQL-tabel HumanResources.DepartmentTest te laden.
Maak verbinding met de Python 3-kernel .
Plak de volgende code in een codecel, werk de code bij met de juiste waarden voor
server,database,usernameenpasswordde locatie van het CSV-bestand.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()Voer de cel uit.
Gegevens in de database bevestigen
Maak verbinding met de SQL-kernel en AdventureWorks-database en voer de volgende SQL-instructie uit om te bevestigen dat de tabel is geladen met gegevens uit het dataframe.
SELECT count(*) from HumanResources.DepartmentTest;
Results
(No column name)
16