產生:初始/範例DB的流程

This commit is contained in:
2025-12-12 09:24:22 +08:00
parent 169a771566
commit 2d3fb23c7b
76 changed files with 21689 additions and 0 deletions

130
data/initdb/initdb.ps1 Normal file
View File

@@ -0,0 +1,130 @@
# 初始化資料庫腳本
#
# 前置作業:
# 1. 在 SSMS 建立空白資料庫,例如: 17168erp_e2
# 2. 確認 sqlcmd 已安裝且可執行
# 3. 確認有該資料庫的寫入權限
#
# 注意: 如果資料庫已有資料,會出現 PRIMARY KEY 違反錯誤,這是正常的
# 可以忽略這些錯誤,或使用全新空白資料庫避免錯誤
#
# 用法: .\initdb.ps1 -ServerName "<伺服器名稱>" -DatabaseName "<資料庫名稱>" [-WithExclude]
# - 範例: .\initdb.ps1 -ServerName "localhost" -DatabaseName "17168erp_init"
# - 範例: .\initdb.ps1 -ServerName "localhost" -DatabaseName "17168erp_demo" -WithExclude
param(
[Parameter(Mandatory=$true)]
[string]$ServerName,
[Parameter(Mandatory=$true)]
[string]$DatabaseName,
[Parameter(Mandatory=$false)]
[switch]$WithExclude
)
# 遇到錯誤就停止
$ErrorActionPreference = "Stop"
# 設定檔案路徑
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Write-Host "========================================"
Write-Host "初始化資料庫: $DatabaseName @ $ServerName"
Write-Host "========================================"
try {
# ==== Schema ====
Write-Host "步驟 1: Schema" -ForegroundColor Yellow
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\17168erp_schema.sql" -b
# ==== Include (依 Batch 順序) ====
Write-Host "步驟 2: Include" -ForegroundColor Yellow
# Batch 1
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.admin_group.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.company.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.country.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.files.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.item.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.PostCity.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.PostNumber.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.AncestralTabletStatus.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.RegionRoomBedStatus.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.RegionType.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.stock_reason.Table.sql" -b
# Batch 2
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.admin.Table.sql" -b
# ==== Exclude (依 Batch 順序) ====
if ($WithExclude) {
Write-Host "步驟 3: Exclude" -ForegroundColor Yellow
# Batch 1
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuadanTimeSetting.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_kind2.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_category_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.appellation.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_group.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_title.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock_kind.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.supplier_kind.Table.sql" -b
# Batch 2
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.followers.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.supplier.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_kind_detail.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletArea.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.Region.Table.sql" -b
# Batch 3
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_check.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.family_members.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.followers_tablet.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuaDanOrder.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.act_bom.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem_files.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_kind_detail.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_relating.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_spares.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletPosition.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.Room.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.admin_log.Table.sql" -b
# Batch 4
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order_detail.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_check.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news_files.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletRegistrant.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.RegionRoomBed.Table.sql" -b
# Batch 5
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_order.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project_sub.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletPositionRecord.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuaDanOrderGuest.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.ShuWen.Table.sql" -b
# Batch 6
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_order_detail.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_files.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock_files.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.transfer_register.Table.sql" -b
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.RegionAndRoomAndBedSchedule.Table.sql" -b
# Batch 7
sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order_record.Table.sql" -b
}
Write-Host "✅ 完成!" -ForegroundColor Green
}
catch {
Write-Host "❌ 錯誤: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}