Java 关于 excel 上传导入到数据库的问题

2019-01-09 10:35:01 +08:00
 shustone

想请问一下这个可不可实现:客户在页面上进行 excel 上传导入到数据库表、但是 excel 的模板没有确定,有可能这个月使用的 excel 模板列数只有 50 列上传导入、下个月就有 55 列上传导入到数据库、后端怎么来进行处理、这种表结构好像也要进行改变?

2137 次点击
所在节点    问与答
17 条回复
fmumu
2019-01-09 10:39:42 +08:00
mongodb,不管什么表结构
shustone
2019-01-09 10:44:18 +08:00
@fmumu 大佬、我们用的是 oracle。我想问的是这种有不有好的解决方式?
night98
2019-01-09 10:45:49 +08:00
存成 json 或 csv 字符串?
lhx2008
2019-01-09 10:46:16 +08:00
可以强行用列式数据库的储存方式,不过,不适合再查询修改,只能一次导入或者导出
shustone
2019-01-09 10:57:33 +08:00
@night98 只能用 excel 来上传
night98
2019-01-09 10:58:13 +08:00
@shustone #5 excel 上传完解析成 map 或者其他的,然后转成 json 或者 csv。
shustone
2019-01-09 10:58:53 +08:00
@lhx2008 这个估计不能、因为这些数据是从其他地方弄过来。然后这边的系统来进行展示
shustone
2019-01-09 10:59:37 +08:00
@night98 我去研究一下
zhaogaz
2019-01-09 11:00:49 +08:00
需要看入库的东西怎么用。单纯的入库是非常简单的。

最简单,最差劲的处理办法显然就是每次上传 excel,数据库都建一个表。

其他思路,的话,可以直接把文件二进制入库。解析读取内容,组织成表结构(上传 id,行号,列号,实际内容)。把 excel 内容读取到,构造成对象,序列化 json 入库。换成 xml 也行。
liuxey
2019-01-09 11:02:17 +08:00
最简单的两种方法:
整列存,字段为:row,value (逗号隔开或 json 等字符串格式),10 行数据就有 10 条数据
列转行,字段为:row, column, value(一个单元格的值),10 行 50 列就有 500 条数据

两种方法各有利弊,自己看吧。
liuxey
2019-01-09 11:03:07 +08:00
@liuxey #10 说错了,第一个是“整行存”
sonyxperia
2019-01-09 11:03:20 +08:00
让用户统一好上传的 excel 格式。
Done.
xiaoxinshiwo
2019-01-09 11:09:47 +08:00
json
dangluren
2019-01-09 13:13:12 +08:00
dangluren
2019-01-09 13:13:38 +08:00
目前还缺 excel 和模板表入库,不过我已经开发好了,过两天传上去
yaerda
2019-01-09 13:24:17 +08:00
模板列数可变的多不多,如果有些基础信息是固定列的话,以这些作为表结构,把可变的部分再单独存到一个字段,前端展示的时候也可以展示基础固定信息,变化的列动态解析展示
shustone
2019-01-09 13:35:32 +08:00
感谢各位回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX