Megosztás a következőn keresztül:


Python-adatkeret beszúrása SQL-táblába

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk azt ismerteti, hogyan szúrhat be pandas-adatkeretet egy SQL-adatbázisba a Python Pyodbc-csomagjának használatával.

Prerequisites

  • Azure Data Studio. A telepítésről az Azure Data Studio letöltése és telepítése című témakörben olvashat.

  • Kövesse az AdventureWorks mintaadatbázisainak lépéseit az AdventureWorks mintaadatbázis OLTP-verziójának visszaállításához az SQL Server-verzióhoz.

    Az adatbázis helyes visszaállítását a HumanResources.Department tábla lekérdezésével ellenőrizheti:

    USE AdventureWorks;
    SELECT * FROM HumanResources.Department;
    

Python-csomagok telepítése

  1. Az Azure Data Studióban nyisson meg egy új jegyzetfüzetet, és csatlakozzon a Python 3 kernelhez.

  2. Válassza a Csomagok kezelése lehetőséget.

    Csomagok kezelése

  3. A Csomagok kezelése panelen válassza az Új hozzáadása lapot.

  4. Az alábbi csomagok mindegyikéhez adja meg a csomag nevét, válassza a Keresés lehetőséget, majd a Telepítés lehetőséget.

    • pyodbc
    • pandas

CSV-mintafájl létrehozása

Másolja ki a következő szöveget, és mentse egy nevű department.csvfájlba.

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

Új adatbázistábla létrehozása

  1. Az AdventureWorks-adatbázishoz való csatlakozáshoz kövesse a Csatlakozás SQL Serverhez című témakörben leírt lépéseket.

  2. Hozzon létre egy HumanResources.DepartmentTest nevű táblát. A rendszer az SQL-táblát használja az adatkeret beszúrásához.

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

Adatkeret betöltése a CSV-fájlból

A Python-csomag pandas használatával hozzon létre egy adatkeretet, töltse be a CSV-fájlt, majd töltse be az adatkeretet az új SQL-táblába, a HumanResources.DepartmentTestbe.

  1. Csatlakozzon a Python 3 kernelhez.

  2. Illessze be a következő kódot egy kódcellába, és frissítse a kódot a csv serverdatabaseusernamefájl megfelelő értékeivel passwordés helyével.

    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. Futtassa cellát.

Adatok megerősítése az adatbázisban

Csatlakozzon az SQL-kernelhez és az AdventureWorks-adatbázishoz, és futtassa a következő SQL-utasítást annak ellenőrzéséhez, hogy a tábla sikeresen betöltődött-e az adatkeretből származó adatokkal.

SELECT count(*) from HumanResources.DepartmentTest;

Results

(No column name)
16

Következő lépés