Загрузка данных


PS C:\Users\student> # ============================================================
# PowerShell скрипт создания базы данных Microsoft Access
# Лабораторная работа 2
# ============================================================

$sPath = "$PSScriptRoot\lab2_database.accdb"
if (-not $PSScriptRoot) { $sPath = "$PWD\lab2_database.accdb" }

Write-Host "Создание базы данных Access..." -ForegroundColor Cyan
Write-Host "Путь: $sPath"

# Удалить старый файл
if (Test-Path $sPath) { Remove-Item $sPath; Write-Host "Старый файл удалён." }

# Создание файла через ADOX
$cat = New-Object -ComObject ADOX.Catalog
$cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")
Write-Host "Файл базы данных создан." -ForegroundColor Green

# Подключение через ADO
$conn = New-Object -ComObject ADODB.Connection
$conn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")

# === Задание 1: Таблица Группы ===
Write-Host "`n=== Задание 1: Создание таблицы Группы ===" -ForegroundColor Yellow
$conn.Execute("CREATE TABLE Группы ([Учебная группа] INTEGER CONSTRAINT PK_Группы PRIMARY KEY, [Преподаватель] TEXT(100));")
Write-Host "Таблица 'Группы' создана." -ForegroundColor Green

# === Задание 2: Таблица Список ===
Write-Host "`n=== Задание 2: Создание таблицы Список ===" -ForegroundColor Yellow
$conn.Execute("CREATE TABLE Список ([Код] AUTOINCREMENT CONSTRAINT PK_Список PRIMARY KEY, [Фамилия] TEXT(50), [Имя] TEXT(50), [Отчество] TEXT(50), [Год рождения] INTEGER, [Школа] INTEGER, [Класс] INTEGER, [Учебная группа] INTEGER);")
Write-Host "Таблица 'Список' создана." -ForegroundColor Green

# === Задание 3: Связь один-ко-многим ===
Write-Host "`n=== Задание 3: Создание схемы данных ===" -ForegroundColor Yellow
$conn.Execute("ALTER TABLE Список ADD CONSTRAINT FK_УчебнаяГруппа FOREIGN KEY ([Учебная группа]) REFERENCES Группы ([Учебная группа]) ON UPDATE CASCADE ON DELETE CASCADE;")
Write-Host "Связь один-ко-многим создана." -ForegroundColor Green

# === Задание 4: Заполнение таблицы Группы ===
Write-Host "`n=== Задание 4: Заполнение таблицы Группы ===" -ForegroundColor Yellow
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (101, 'Верзаков С. А.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (102, 'Белоусов А. И.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (103, 'Масалова В. А.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (104, 'Новикова Е. В.');")
$conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) VALUES (105, 'Зачесова Т. П.');")
Write-Host "Таблица 'Группы' заполнена (5 записей)." -ForegroundColor Green

# === Задание 6: Заполнение таблицы Список ===
Write-Host "`n=== Задание 6: Заполнение таблицы Список ===" -ForegroundColor Yellow
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Чернова','Кристина','Ивановна',1987,1,9,101);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Терещенко','Инна','Алексеевна',1986,3,10,103);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Сидоров','Иван','Петрович',1987,5,10,101);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Бондарь','Ольга','Петровна',1987,1,9,104);")
$conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год рождения],[Школа],[Класс],[Учебная группа]) VALUES ('Новоселов','Алексей','Иванович',1987,3,9,105);")
Write-Host "Таблица 'Список' заполнена (5 записей)." -ForegroundColor Green

# === Задание 7: Каскадное обновление 101-105 -> 201-205 ===
Write-Host "`n=== Задание 7: Каскадное обновление групп ===" -ForegroundColor Yellow
$conn.Execute("UPDATE Группы SET [Учебная группа]=201 WHERE [Учебная группа]=101;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=202 WHERE [Учебная группа]=102;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=203 WHERE [Учебная группа]=103;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=204 WHERE [Учебная группа]=104;")
$conn.Execute("UPDATE Группы SET [Учебная группа]=205 WHERE [Учебная группа]=105;")
Write-Host "Группы обновлены 101->201 ... 105->205. Список обновился автоматически." -ForegroundColor Green

# === Задание 8: Каскадное удаление ===
Write-Host "`n=== Задание 8: Каскадное удаление ===" -ForegroundColor Yellow
$rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная группа]=201;")
Write-Host "Записей с группой 201 до удаления: $($rs.Fields(0).Value)"
$conn.Execute("DELETE FROM Группы WHERE [Учебная группа]=201;")
$rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная группа]=201;")
Write-Host "Записей с группой 201 после удаления: $($rs.Fields(0).Value)"
Write-Host "Каскадное удаление работает!" -ForegroundColor Green

$conn.Close()

Write-Host "`n============================================" -ForegroundColor Cyan
Write-Host "БАЗА ДАННЫХ УСПЕШНО СОЗДАНА!" -ForegroundColor Green
Write-Host "Файл: $sPath" -ForegroundColor Cyan
Write-Host "============================================`n"
Write-Host "Открой файл lab2_database.accdb в Microsoft Access" -ForegroundColor Yellow
pause

Создание базы данных Access...
Путь: C:\Users\student\lab2_database.accdb
Класс не зарегистрирован
строка:17 знак:1
+ $cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Файл базы данных создан.
Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
строка:22 знак:1
+ $conn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$sPath;")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 

=== Задание 1: Создание таблицы Группы ===
Операция не допускается, если объект закрыт.
строка:26 знак:1
+ $conn.Execute("CREATE TABLE Группы ([Учебная группа] INTEGER CONSTRAI ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Таблица 'Группы' создана.

=== Задание 2: Создание таблицы Список ===
Операция не допускается, если объект закрыт.
строка:31 знак:1
+ $conn.Execute("CREATE TABLE Список ([Код] AUTOINCREMENT CONSTRAINT PK ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Таблица 'Список' создана.

=== Задание 3: Создание схемы данных ===
Операция не допускается, если объект закрыт.
строка:36 знак:1
+ $conn.Execute("ALTER TABLE Список ADD CONSTRAINT FK_УчебнаяГруппа FOR ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Связь один-ко-многим создана.

=== Задание 4: Заполнение таблицы Группы ===
Операция не допускается, если объект закрыт.
строка:41 знак:1
+ $conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:42 знак:1
+ $conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:43 знак:1
+ $conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:44 знак:1
+ $conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:45 знак:1
+ $conn.Execute("INSERT INTO Группы ([Учебная группа], [Преподаватель]) ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Таблица 'Группы' заполнена (5 записей).

=== Задание 6: Заполнение таблицы Список ===
Операция не допускается, если объект закрыт.
строка:50 знак:1
+ $conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год ро ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:51 знак:1
+ $conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год ро ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:52 знак:1
+ $conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год ро ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:53 знак:1
+ $conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год ро ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:54 знак:1
+ $conn.Execute("INSERT INTO Список ([Фамилия],[Имя],[Отчество],[Год ро ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Таблица 'Список' заполнена (5 записей).

=== Задание 7: Каскадное обновление групп ===
Операция не допускается, если объект закрыт.
строка:59 знак:1
+ $conn.Execute("UPDATE Группы SET [Учебная группа]=201 WHERE [Учебная  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:60 знак:1
+ $conn.Execute("UPDATE Группы SET [Учебная группа]=202 WHERE [Учебная  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:61 знак:1
+ $conn.Execute("UPDATE Группы SET [Учебная группа]=203 WHERE [Учебная  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:62 знак:1
+ $conn.Execute("UPDATE Группы SET [Учебная группа]=204 WHERE [Учебная  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:63 знак:1
+ $conn.Execute("UPDATE Группы SET [Учебная группа]=205 WHERE [Учебная  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Группы обновлены 101->201 ... 105->205. Список обновился автоматически.

=== Задание 8: Каскадное удаление ===
Операция не допускается, если объект закрыт.
строка:68 знак:1
+ $rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная групп ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Невозможно вызвать метод для выражения со значением NULL.
строка:69 знак:50
+ ... rite-Host "Записей с группой 201 до удаления: $($rs.Fields(0).Value)"
+                                                     ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Записей с группой 201 до удаления: 
Операция не допускается, если объект закрыт.
строка:70 знак:1
+ $conn.Execute("DELETE FROM Группы WHERE [Учебная группа]=201;")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Операция не допускается, если объект закрыт.
строка:71 знак:1
+ $rs = $conn.Execute("SELECT COUNT(*) FROM Список WHERE [Учебная групп ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 
Невозможно вызвать метод для выражения со значением NULL.
строка:72 знак:53
+ ... e-Host "Записей с группой 201 после удаления: $($rs.Fields(0).Value)"
+                                                     ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Записей с группой 201 после удаления: 
Каскадное удаление работает!
Операция не допускается, если объект закрыт.
строка:75 знак:1
+ $conn.Close()
+ ~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
 

============================================
БАЗА ДАННЫХ УСПЕШНО СОЗДАНА!
Файл: C:\Users\student\lab2_database.accdb
============================================

Открой файл lab2_database.accdb в Microsoft Access
Для продолжения нажмите клавишу ВВОД...: 

PS C:\Users\student>