В этом руководстве вы узнаете, как быстро вставлять данные в таблицу SQL Server с помощью функции массового копирования.
Это руководство начинается с того места, где закончилось руководство по импорту данных из CSV-файла в таблицу SQL Server.
Чтобы быстро вставить большой объем данных в таблицу SQL Server, можно использовать функцию массового копирования. Мы покажем, как выполнить массовое копирование данных в таблицу Customers.
Выполнить массовое копирование данных клиентов
Шаг 1. Загрузите и скопируйте следующие данные customers.csv в каталог данных:
Файл customers.csv содержит 500 записей о клиентах со всеми столбцами из таблицы Customers, включая CustomerID, FirstName, LastName, Email, PhoneNumber и Address.
Шаг 2. Создайте новый файл bulk.py в каталоге проекта:
mkdir data
Шаг 3. Добавьте следующий код в файл bulk.py:
from connect import create_connection from utils import read_csv def bulk_copy_customers(filename:str) -> bool: customers = read_csv(filename) if not customers: return False conn = create_connection() if conn is None: return False with conn: conn.bulk_copy('Customers',customers) conn.commit() return True
Как это работает.
Сначала импортируйте функцию create_connection из модуля connect и функцию read_csv из модуля utils:
from connect import create_connection from utils import read_csv
Вот более подробная информация о модулях connect и utils.
Во-вторых, определите функцию bulk_copy_customers, которая принимает имя CSV-файла как строку и возвращает логическое значение, указывающее, успешно ли выполнено массовое копирование:
def bulk_copy_customers(filename:str) -> bool:
В-третьих, считайте данные о клиентах из CSV-файла, указанного аргументом filename, и верните False, если файл клиентов пуст:
customers = read_csv(filename) if not customers: return False
В-четвертых, создайте новое соединение с SQL Server, вызвав функцию create_connection, и верните False в случае сбоя соединения:
conn = create_connection() if conn is None: return False
В-пятых, вызовите функцию bulk_copy объекта Connection для выполнения массового копирования:
with conn: conn.bulk_copy('Customers',customers) conn.commit()
Функция bulk_copy принимает имя таблицы и список кортежей, где каждый кортеж содержит данные, представляющие запись клиента.
Оператор with обеспечивает правильное управление объектом Connection, поэтому вам не придется закрывать его вручную.
Метод commit() навсегда применяет изменения к базе данных. Если вы не вызовете метод commit(), изменения не будут сохранены в базе данных.
Наконец, верните True из функции, чтобы указать, что массовое копирование прошло успешно:
return True
Шаг 4. Измените модуль main.py, который использует функцию bulk_copy_customers:
import logging, sys from bulk import bulk_copy_customers # config logging to console logging.basicConfig( stream=sys.stdout, encoding='utf-8', format='%(levelname)s:%(message)s', level=logging.DEBUG ) bulk_copy_customers('./data/customers.csv')
Как это работает.
Сначала импортируйте logging и sys для ведения журнала:
import logging, sys
Во-вторых, импортируйте функцию bulk_copy_customers из модуля bulk:
from bulk import bulk_copy_customers
В-третьих, настройте ведение журнала для вывода сообщений на терминал:
logging.basicConfig( stream=sys.stdout, encoding='utf-8', format='%(levelname)s:%(message)s', level=logging.DEBUG )
Наконец, вызовите функцию bulk_copy_customers, чтобы скопировать данные клиентов из ./data/customers.csv в таблицу Customers:
bulk_copy_customers('./data/customers.csv')
Шаг 5. Откройте терминал и запустите файл main.py:
python main.py
Проверка массовой копии
Шаг 1. Запустите SQL Server Management Studio и подключитесь к SQL Server.
Шаг 2. Выполните следующий запрос, который извлекает данные из таблицы Customers:
SELECT * FROM customers;
Выход:
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Используйте метод bulk_copy() объекта Connection для быстрой загрузки данных в таблицу SQL Server.