Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
zendata
提交
8afedea5
Z
zendata
项目概览
LinuxSuRen
/
zendata
与 Fork 源项目一致
Fork自
易企天创 / zendata
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8afedea5
编写于
5月 13, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
generate sqlite tables from excel
上级
22aec936
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
98 addition
and
22 deletion
+98
-22
src/action/upgrade.go
src/action/upgrade.go
+2
-1
src/gen/excel.go
src/gen/excel.go
+75
-6
src/gen/generator.go
src/gen/generator.go
+21
-15
未找到文件。
src/action/upgrade.go
浏览文件 @
8afedea5
...
...
@@ -31,8 +31,9 @@ func Upgrade() {
sqls
:=
make
([]
string
,
0
)
sheet
:=
"
Sheet1
"
sheet
:=
"
city
"
excel
:=
excelize
.
NewFile
()
excel
.
SetSheetName
(
"Sheet1"
,
sheet
)
headerData
:=
[]
interface
{}{
"seq"
,
"name"
,
"state"
,
"zipCode"
,
"cityCode"
,
"crc"
}
colNumb
:=
AddExcelRow
(
excel
,
sheet
,
1
,
headerData
)
...
...
src/gen/excel.go
浏览文件 @
8afedea5
package
gen
import
(
"database/sql"
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
"github.com/easysoft/zendata/src/model"
constant
"github.com/easysoft/zendata/src/utils/const"
logUtils
"github.com/easysoft/zendata/src/utils/log"
"strconv"
"strings"
)
...
...
@@ -15,13 +19,11 @@ func GenerateFieldValuesFromExcel(field *model.Field, fieldValue *model.FieldVal
stepStr
:=
"1"
if
len
(
sectionArr
)
==
2
{
stepStr
=
sectionArr
[
1
]
}
// read from file
list
:=
make
([]
string
,
0
)
relaPath
:=
constant
.
DataDir
+
file
path
:=
constant
.
DataDir
+
file
ConvertExcelToSQLite
(
*
field
,
path
)
list
=
strings
.
Split
(
"str"
+
relaPath
,
"
\n
"
)
list
=
strings
.
Split
(
"str"
+
path
,
"
\n
"
)
// get step and rand
rand
:=
false
...
...
@@ -54,8 +56,75 @@ func GenerateFieldValuesFromExcel(field *model.Field, fieldValue *model.FieldVal
}
}
func
ConvertExcelToSQLite
(
file
string
)
{
func
ConvertExcelToSQLite
(
field
model
.
Field
,
path
string
)
{
excel
,
err
:=
excelize
.
OpenFile
(
path
)
if
err
!=
nil
{
logUtils
.
Screen
(
"fail to read file: "
+
err
.
Error
())
return
}
sheet
:=
excel
.
GetSheetName
(
0
);
rows
,
err
:=
excel
.
GetRows
(
sheet
)
dropTemplate
:=
`DROP TABLE IF EXISTS %s;`
ddlTemplate
:=
`CREATE TABLE %s (
%s
);`
insertTemplate
:=
"INSERT INTO %s (%s) VALUES %s"
colDefine
:=
""
colList
:=
""
index
:=
0
for
_
,
col
:=
range
rows
[
0
]
{
val
:=
strings
.
TrimSpace
(
col
)
if
index
>
0
{
colDefine
=
colDefine
+
",
\n
"
colList
=
colList
+
", "
}
colProp
:=
""
if
val
==
"seq"
{
colProp
=
"CHAR (5) PRIMARY KEY ASC UNIQUE"
}
else
{
colProp
=
"VARCHAR"
}
colDefine
=
" "
+
colDefine
+
val
+
" "
+
colProp
colList
=
colList
+
val
index
++
}
valList
:=
""
for
rowIndex
,
row
:=
range
rows
{
if
rowIndex
==
0
{
continue
}
if
rowIndex
>
1
{
valList
=
valList
+
", "
}
valList
=
valList
+
"("
for
colIndex
,
colCell
:=
range
row
{
if
colIndex
>
0
{
valList
=
valList
+
", "
}
valList
=
valList
+
"'"
+
colCell
+
"'"
}
valList
=
valList
+
")"
}
dropSql
:=
fmt
.
Sprintf
(
dropTemplate
,
field
.
Name
)
ddl
:=
fmt
.
Sprintf
(
ddlTemplate
,
field
.
Name
,
colDefine
)
insertSql
:=
fmt
.
Sprintf
(
insertTemplate
,
field
.
Name
,
colList
,
valList
)
db
,
err
:=
sql
.
Open
(
"sqlite3"
,
constant
.
SqliteSource
)
_
,
err
=
db
.
Exec
(
dropSql
)
_
,
err
=
db
.
Exec
(
ddl
)
if
err
!=
nil
{
logUtils
.
Screen
(
"fail to create table: "
+
err
.
Error
())
return
}
else
{
_
,
err
=
db
.
Exec
(
insertSql
)
if
err
!=
nil
{
logUtils
.
Screen
(
"fail to insert data: "
+
err
.
Error
())
return
}
}
}
func
ReadDataSQLite
(
table
string
)
[]
string
{
...
...
src/gen/generator.go
浏览文件 @
8afedea5
...
...
@@ -53,15 +53,7 @@ func GenerateForField(field *model.Field, total int) []string {
values
:=
make
([]
string
,
0
)
if
field
.
Type
==
"custom"
{
if
field
.
Range
!=
""
{
// specific custom file
LoadDefinitionFromFile
(
constant
.
ResDir
+
field
.
Range
)
}
referField
:=
constant
.
LoadedFields
[
field
.
Name
]
values
=
GenerateFieldItemsFromDefinition
(
&
referField
,
total
)
}
else
if
len
(
field
.
Fields
)
>
0
{
// nested definition
if
len
(
field
.
Fields
)
>
0
{
// nested definition
arr
:=
make
([][]
string
,
0
)
for
_
,
child
:=
range
field
.
Fields
{
childValues
:=
GenerateForField
(
&
child
,
total
)
...
...
@@ -77,8 +69,22 @@ func GenerateForField(field *model.Field, total int) []string {
concat
=
field
.
Prefix
+
concat
+
field
.
Postfix
values
=
append
(
values
,
concat
)
}
}
else
{
}
else
if
field
.
Type
==
"list"
{
// list type
values
=
GenerateFieldItemsFromDefinition
(
field
,
total
)
}
else
if
field
.
Type
==
"custom"
{
// custom type
if
field
.
Range
!=
""
{
// specific custom file
LoadDefinitionFromFile
(
constant
.
ResDir
+
field
.
Range
)
}
referField
:=
constant
.
LoadedFields
[
field
.
Name
]
values
=
GenerateFieldItemsFromDefinition
(
&
referField
,
total
)
}
else
{
// other type like address.city
arr
:=
strings
.
Split
(
field
.
Type
,
"."
)
referField
:=
constant
.
LoadedFields
[
arr
[
0
]]
values
=
GenerateFieldItemsFromDefinition
(
&
referField
,
total
)
}
return
values
...
...
@@ -95,12 +101,12 @@ func GenerateFieldItemsFromDefinition(field *model.Field, total int) []string {
fieldValue
:=
model
.
FieldValue
{}
switch
datatype
{
case
constant
.
LIST
.
String
()
:
//
switch datatype {
//
case constant.LIST.String():
fieldValue
=
GenerateList
(
field
,
total
)
default
:
}
//
//
default:
//
}
index
:=
0
count
:=
0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录