Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
8c63c7c5
Z
zendata
项目概览
易企天创
/
zendata
9 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8c63c7c5
编写于
6月 22, 2022
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
export data
上级
110bf2f0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
122 addition
and
2 deletion
+122
-2
cmd/test/export/export-city.go
cmd/test/export/export-city.go
+64
-0
cmd/test/import/comm/comm.go
cmd/test/import/comm/comm.go
+39
-0
cmd/test/import/comm/consts.go
cmd/test/import/comm/consts.go
+0
-1
cmd/test/import/model/model.go
cmd/test/import/model/model.go
+19
-1
未找到文件。
cmd/test/export/export-city.go
0 → 100644
浏览文件 @
8c63c7c5
package
main
import
(
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
"github.com/easysoft/zendata/cmd/test/import/comm"
"github.com/easysoft/zendata/cmd/test/import/model"
fileUtils
"github.com/easysoft/zendata/pkg/utils/file"
"path/filepath"
"reflect"
)
func
main
()
{
filePath
:=
"data/city/v1.xlsx"
sheetName
:=
"city"
fileUtils
.
MkDirIfNeeded
(
filepath
.
Dir
(
filePath
))
db
:=
comm
.
GetDB
()
db
.
AutoMigrate
(
&
model
.
DataCity
{},
)
pos
:=
make
([]
model
.
DataCity
,
0
)
db
.
Where
(
"NOT deleted"
)
.
Find
(
&
pos
)
f
:=
excelize
.
NewFile
()
index
:=
f
.
NewSheet
(
sheetName
)
var
infos
[]
model
.
TableInfo
db
.
Raw
(
"desc "
+
model
.
DataCity
{}
.
TableName
())
.
Scan
(
&
infos
)
excelColNameArr
,
excelColNameHeader
:=
comm
.
GetExcelColsByTableDef
(
infos
)
fieldNames
:=
comm
.
GetStructFields
(
model
.
DataCity
{})
// gen headers
for
index
,
name
:=
range
excelColNameHeader
{
excelColName
:=
excelColNameArr
[
index
]
excelColId
:=
fmt
.
Sprintf
(
"%s%d"
,
excelColName
,
1
)
f
.
SetCellValue
(
sheetName
,
excelColId
,
name
)
}
// gen rows
for
rowIndex
,
po
:=
range
pos
{
for
fieldIndex
,
fieldName
:=
range
fieldNames
{
val
:=
""
if
fieldName
==
"Id"
{
val
=
fmt
.
Sprintf
(
"%d"
,
reflect
.
ValueOf
(
po
)
.
FieldByName
(
fieldName
)
.
Int
())
}
else
{
val
=
reflect
.
ValueOf
(
po
)
.
FieldByName
(
fieldName
)
.
String
()
}
excelColName
:=
excelColNameArr
[
fieldIndex
]
excelColId
:=
fmt
.
Sprintf
(
"%s%d"
,
excelColName
,
rowIndex
+
2
)
f
.
SetCellValue
(
sheetName
,
excelColId
,
val
)
}
}
f
.
SetActiveSheet
(
index
)
f
.
SaveAs
(
filePath
)
}
cmd/test/import/comm/comm.go
0 → 100644
浏览文件 @
8c63c7c5
package
comm
import
(
"fmt"
"github.com/easysoft/zendata/cmd/test/import/model"
"reflect"
)
func
GetStructFields
(
interf
interface
{})
(
fieldNames
[]
string
)
{
retH
:=
reflect
.
TypeOf
(
interf
)
for
i
:=
0
;
i
<
retH
.
NumField
();
i
++
{
f
:=
retH
.
Field
(
i
)
if
f
.
Name
!=
"BaseModel"
{
fieldNames
=
append
(
fieldNames
,
f
.
Name
)
}
}
return
}
func
GetExcelColsByTableDef
(
infos
[]
model
.
TableInfo
)
(
excelColNameArr
,
excelColNameHeader
[]
string
)
{
excelColIndex
:=
'A'
for
_
,
info
:=
range
infos
{
if
info
.
Field
==
"created_at"
||
info
.
Field
==
"updated_at"
||
info
.
Field
==
"deleted"
||
info
.
Field
==
"disabled"
{
continue
}
colName
:=
fmt
.
Sprintf
(
"%c"
,
excelColIndex
)
excelColNameArr
=
append
(
excelColNameArr
,
colName
)
excelColNameHeader
=
append
(
excelColNameHeader
,
info
.
Field
)
excelColIndex
+=
1
}
return
}
cmd/test/import/comm/consts.go
浏览文件 @
8c63c7c5
...
...
@@ -6,7 +6,6 @@ const (
CreateTableTempl
=
`CREATE TABLE IF NOT EXISTS %s (
id bigint auto_increment,
content varchar(1000) not null unique,
tag varchar(50),
primary key(id)
) engine=innodb default charset=utf8 auto_increment=1;`
...
...
cmd/test/import/model/model.go
浏览文件 @
8c63c7c5
...
...
@@ -52,7 +52,7 @@ func (DataCountry) TableName() string {
}
type
DataCity
struct
{
BaseModel
Id
int
`json:"id"`
Name
string
`json:"name"`
Code
string
`json:"code"`
...
...
@@ -194,3 +194,21 @@ type DataWord struct {
func
(
DataWord
)
TableName
()
string
{
return
"biz_data_word"
}
type
DataContent
struct
{
BaseModel
Content
string
`json:"content"`
}
func
(
DataContent
)
TableName
()
string
{
return
"biz_data_word"
}
type
TableInfo
struct
{
Field
string
Type
string
Null
string
Key
string
Default
string
Extra
string
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录