网站首页/ 信息中心/ 档案百科/

从旧系统迁移档案数据到新系统的实操技术全指南

发布时间:2026年06月27日 04:25:09 浏览量:0

迁移前的核心准备工作

旧系统数据导出

先定位旧系统的数据库配置,一般在旧系统根目录的config.php或.env文件中,确认数据库类型为MySQL(90%中小系统使用该类型)、IP、端口、用户名、密码及库名。执行以下命令导出完整备份:

``` mysqldump -h127.0.0.1 -P3306 -uroot -p'你的旧系统数据库密码' 旧系统库名 > old_archive_backup.sql ```

若旧系统为云RDS,替换IP为RDS实例地址、端口和对应账号密码即可。若需避免锁表,添加--single-transaction参数:

``` mysqldump -hRDS实例地址 -P3306 -uRDS用户名 -p'RDS密码' 旧系统库名 --single-transaction > old_archive_backup.sql ```

新系统环境初始化(零门槛Docker部署)

推荐用Docker部署开源档案系统OpenKM,避免环境依赖冲突,CentOS7环境执行以下命令:

``` 安装Docker yum install -y docker && systemctl start docker && systemctl enable docker 拉取OpenKM稳定镜像(6.3.10版) docker pull openkm/openkm-ce:6.3.10 启动容器,映射8080端口,绑定数据卷 docker run -d -p 8080:8080 -v /opt/openkm_data:/usr/local/tomcat/webapps/ROOT/okm -v /opt/openkm_db:/opt/postgresql/data --name openkm openkm/openkm-ce:6.3.10 ```

部署完成后,访问服务器IP:8080,默认账号admin、密码admin,首次登录需立即修改密码

数据清洗与格式标准化(避免导入报错)

核心清洗步骤

1. 删除无效数据:登录旧系统数据库,执行SQL清除已删除/草稿且超期的记录(调整状态码和时间条件适配自身系统):

``` USE 旧系统库名; DELETE FROM archive_files WHERE status IN (2,3) AND update_time < DATE_SUB(NOW(), INTERVAL 180 DAY); ```

2. 补全必填字段:新系统要求档案编号、创建时间、保管期限必填,执行SQL批量补全:

``` UPDATE old_archive SET archive_no = CONCAT('ARCH',LPAD(id,6,'0')), create_time = NOW(), retention_period = '30年' WHERE archive_no IS NULL OR create_time IS NULL OR retention_period IS NULL; ```

3. 修正附件路径:批量替换旧系统附件路径为新系统路径:

``` UPDATE old_archive SET attach_path = REPLACE(attach_path,'/var/archive/files/','/opt/openkm_data/files/'); ```

完成后导出CSV文件(避免SQL格式转换麻烦),先开启MySQL的文件导出权限:

``` SHOW VARIABLES LIKE 'secure_file_priv'; ```

若返回结果为/tmp/,直接执行导出CSV命令:

``` SELECT id,archive_no,title,content,create_time,retention_period,attach_path FROM archive_files INTO OUTFILE '/tmp/clean_archive.csv' CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ```

数据导入新系统的实操步骤

OpenKM系统CSV导入配置

1. 上传CSV到容器:把本地的/tmp/clean_archive.csv复制到OpenKM容器内:

``` docker cp /tmp/clean_archive.csv openkm:/tmp/ ```

2. 后台导入:登录OpenKM后台,进入【文档→导入→CSV导入】,选择刚上传的clean_archive.csv,按提示匹配字段:档案编号→archive_no、标题→title、内容→content、创建时间→create_time、保管期限→retention_period、附件路径→attach_path,勾选忽略重复编号,点击导入按钮。

从旧系统迁移档案数据到新系统的实操技术全指南

3. 附件同步:完成CSV导入后,把旧系统的附件文件夹复制到新系统数据卷路径:

``` cp -r /var/archive/files/ /opt/openkm_data/files/ ```

迁移后验证与收尾

核心验证项

1. 数量核对:旧系统执行SELECT COUNT() FROM archive_files; 新系统进入【档案列表】核对数量一致。

2. 附件完整性:随机抽取5条档案,测试附件下载、打开是否正常。

3. 权限验证:用普通账号登录,确认无越权访问非权限档案。

收尾步骤

1. 删除临时文件:清理导出的SQL和CSV释放空间:

``` rm /tmp/old_archive_backup.sql /tmp/clean_archive.csv ```

2. 配置自动备份:在OpenKM容器内设置每日凌晨2点备份数据库:

``` docker exec openkm crontab -e ```

添加一行(%需转义):0 2 pg_dump -U openkm openkm > /opt/openkm_backup/$(date +\%Y\%m\%d).sql

3. 停用旧服务:确认迁移无误后,停止旧系统数据库服务:

``` systemctl stop mysqld ```

常见问题排查

导入失败问题

1. CSV乱码:重新导出时已指定UTF8编码,若仍乱码,用sed批量替换编码:

``` sed -i 's/GBK/UTF8/g' /tmp/clean_archive.csv ```

2. 附件路径错误:用sed批量修正路径:

``` sed -i 's/\/var\/archive\/files\//\/opt\/openkm_data\/files\//g' /tmp/clean_archive.csv ```

3. 端口无法访问:检查防火墙是否开放8080端口:

``` firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload ```

数据不一致问题

核对新旧系统时间戳范围:旧系统执行SELECT MIN(create_time), MAX(create_time) FROM archive_files; 新系统执行SELECT MIN(create_time), MAX(create_time) FROM documents; 若时间差超1秒,调整旧系统时区:

``` SET time_zone = '+8:00'; ```
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818