\App\Console\CommandsRegionDump

地区导出命令

职责:把 td_sys_region 五级行政区划导出为 gzip CSV 存档(含表头,UTF-8),供 region:restore 恢复。

背景:td_sys_region 约 66 万行,结构迁移与 data-sync 均不含数据(地区数据单独走本命令链, 数据文件 database/data-source/region.csv.gz)。本命令是「已整理数据」的导出闭环—— 在全新环境恢复相同地区数据时 region:dump → 拷贝存档 → region:restore 即可, 免去重跑原始数据导入与补全。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 命令签名与说明 $signature / $description 分区 2 · 执行入口 handle 分区 3 · 内部辅助 tableColumns └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
handle()
No public properties found
REGION_TABLE
forgetRegionCaches()
syncRegionSequence()
batchInsert()
flushInsert()
nullableColumns()
$signature
$description
N/A
tableColumns()
No private properties found
N/A

Constants

REGION_TABLE

REGION_TABLE = 'td_sys_region'

地区表名(裸表名,SQL 拼接处走 DbSchema::prefix)

Properties

$signature

$signature

命令签名:region:dump,--file 指定输出存档路径(默认 database/data-source/region.csv.gz)

$description

$description

命令说明

Methods

handle()

handle() : int

执行导出。

流程:① 打开 gzip 存档(失败返回失败) ② 动态读表结构列(按 ordinal_position,避免与迁移定义漂移) ③ 写表头后 chunkById(5000) 分批流式导出 ④ 关闭句柄并输出统计

Returns

int —

forgetRegionCaches()

forgetRegionCaches() : void

手动失效地区缓存(DB 直插/直改不触发模型事件时的单源收口)。 sys:region:tree 含地区全字段,缺失失效会让旧值残留。

syncRegionSequence()

syncRegionSequence() : void

同步地区序列(仅 pgsql;表名走 DbSchema::prefix(),勿硬编码 schema)

batchInsert()

batchInsert(array  $rows, int  $count, int  $batchSize = 2000) : void

批量攒插:行攒满 $batchSize 即插入并清空(内存恒定,防单条长事务)

Parameters

array $rows
int $count
int $batchSize

flushInsert()

flushInsert(array  $rows, int  $count) : void

尾部 flush:不足一批的剩余行落库

Parameters

array $rows
int $count

nullableColumns()

nullableColumns() : array<string,bool>

当前库表列 → 是否可空(按定义顺序;Schema 抽象,PG/sqlite 通吃—— 此前 RegionDump 的 information_schema 版仅 PG 可用,统一为可移植实现)。

Returns

array

列名 → true=可空(空值语义由调用方按列决定)

tableColumns()

tableColumns() : array

当前库表列(按定义顺序;单源 RegionCommand::nullableColumns——可移植 PG/sqlite)

Returns

array —