Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
W tym artykule opisano sposób wstawiania obiektu pandas DataFrame do bazy danych SQL przy użyciu pakietu Pyodbc w języku Python.
Prerequisites
Program SQL Server Management Studio umożliwiający przywrócenie przykładowej bazy danych do usługi Azure SQL Managed Instance.
Azure Data Studio. Aby zainstalować, zobacz Pobieranie i instalowanie programu Azure Data Studio.
Wykonaj kroki opisane w przykładowych bazach danych AdventureWorks , aby przywrócić wersję olTP przykładowej bazy danych AdventureWorks dla używanej wersji programu SQL Server.
Możesz sprawdzić, czy baza danych została prawidłowo przywrócona, wykonując zapytanie dotyczące tabeli HumanResources.Department :
USE AdventureWorks; SELECT * FROM HumanResources.Department;
Instalowanie pakietów języka Python
W narzędziu Azure Data Studio otwórz nowy notes i połącz się z jądrem języka Python 3.
Wybierz pozycję Zarządzaj pakietami.
W okienku Zarządzanie pakietami wybierz kartę Dodaj nową .
Dla każdego z poniższych pakietów wprowadź nazwę pakietu, wybierz pozycję Wyszukaj, a następnie wybierz pozycję Zainstaluj.
- pyodbc
- pandas
Tworzenie przykładowego pliku CSV
Skopiuj następujący tekst i zapisz go w pliku o nazwie 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
Tworzenie nowej tabeli bazy danych
Wykonaj kroki opisane w temacie Nawiązywanie połączenia z programem SQL Server w celu nawiązania połączenia z bazą danych AdventureWorks.
Utwórz tabelę o nazwie HumanResources.DepartmentTest. Tabela SQL będzie używana do wstawiania ramek danych.
CREATE TABLE [HumanResources].[DepartmentTest]( [DepartmentID] [smallint] NOT NULL, [Name] [dbo].[Name] NOT NULL, [GroupName] [dbo].[Name] NOT NULL ) GO
Ładowanie ramki danych z pliku CSV
Użyj pakietu języka Python pandas , aby utworzyć ramkę danych, załadować plik CSV, a następnie załadować ramkę danych do nowej tabeli SQL HumanResources.DepartmentTest.
Połącz się z jądrem Python 3.
Wklej następujący kod do komórki kodu, aktualizując kod przy użyciu poprawnych wartości dla
server,database,username,passwordi lokalizacji pliku 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()Uruchom komórkę.
Potwierdzanie danych w bazie danych
Połącz się z jądrem SQL i bazą danych AdventureWorks i uruchom następującą instrukcję SQL, aby potwierdzić, że tabela została pomyślnie załadowana z danymi z ramki danych.
SELECT count(*) from HumanResources.DepartmentTest;
Results
(No column name)
16