Python SQL Server: импорт из CSV

В этом уроке вы узнаете, как импортировать данные из CSV-файла в таблицу из программы Python.

Это руководство начинается с того места, где закончилась вставка данных в таблицу SQL Server из руководства по программе Python.

Подготовка CSV-файла

Шаг 1. Создайте новый каталог в каталоге проекта с именем data.

Шаг 2. Скопируйте следующий файл authors.csv, содержащий данные об авторах для каталога данных:

Загрузите файл authors.csv

Файл authors.csv содержит три столбца, включая имя, фамилию и дату рождения:

First Name,Last Name,Birth Date
Robin,Calderon,1977-06-12
David,Hunter,1983-08-01
Craig,Hart,1991-12-13
...

Чтение данных из CSV-файла

Шаг 1. Создайте новый модуль с именем utils.py.

Шаг 2. Определите функцию read_csv, которая считывает данные из CSV-файла, указанного именем файла, и возвращает кортеж:

import csv
def read_csv(filename:str) -> tuple:
    with open(filename, 'r') as f:
        reader = csv.reader(f)
        next(reader)  # skip the header
        return [tuple(row) for row in reader]

Как это работает.

Сначала откройте CSV-файл:

with open(filename, 'r') as f:

Во-вторых, CSV-файл построчно:

reader = csv.reader(f)

В-третьих, пропустите заголовок:

next(reader)  # skip the header

Наконец, преобразуйте каждую строку в кортеж, прежде чем возвращать все строки в виде списка кортежей.

return [tuple(row) for row in reader]

Импорт данных в таблицу

Шаг 1. Создайте новый модуль import_author.py в каталоге проекта:

Шаг 2. Определите функцию import_author_from_csv для импорта данных из CSV-файла и вставьте каждую строку в таблицу Authors:

from insert import insert_author
from utils import read_csv
def import_author_from_csv(filename: str) -> None:
    authors = read_csv(filename)
    for author in authors:
        insert_author(*author)

Как это работает.

Сначала импортируйте функцию вставки из модуля insert_author и функцию read_csv из модуля utils:

from insert import insert_author
from utils import read_csv

Во-вторых, считайте данные из CSV-файла, указанного в имени файла, с помощью функции read_csv:

authors = read_csv(filename)

Функция read_csv возвращает список кортежей, каждый из которых содержит имя, фамилию и дату рождения автора.

В-третьих, вставьте каждого автора в таблицу Authors, вызвав функцию insert_author:

for author in authors:
    insert_author(*author)

Шаг 3. Измените файл main.py, чтобы использовать функцию import_author_from_csv для импорта данных из ./data/authors.csv в таблицу Authors:

import logging, sys
from import_author import import_author_from_csv 
# config logging to console
logging.basicConfig(
    stream=sys.stdout, 
    encoding='utf-8', 
    format='%(levelname)s:%(message)s',
    level=logging.DEBUG
)
# import data from csv file
import_author_from_csv('./data/authors.csv')

Шаг 4. Откройте терминал и выполните файл main.py:

python main.py

Шаг 5. Проверка импорта

Откройте SQL Server Management Studio(SSMS), подключитесь к SQL Server и выполните следующий запрос:

SELECT * FROM Authors;

Выход:

Авторы импорта Python SQL Server

Загрузите исходный код проекта

Загрузите исходный код проекта

Краткое содержание

  • Используйте модуль csv для чтения данных из CSV-файла.
  • Выполните оператор INSERT, чтобы вставить каждую строку CSV-файла в таблицу.
Мирослав С.

Автор статей, ИБ-специалист