Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
zendata
提交
f61ec3e4
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 搜索 >>
提交
f61ec3e4
编写于
9月 10, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
combine all excel data to single table
上级
59b21d69
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
72 addition
and
69 deletion
+72
-69
test/article/convert_test.go
test/article/convert_test.go
+72
-69
tmp/cache/.words.db
tmp/cache/.words.db
+0
-0
xdoc/words-9.3/名词词库.xlsx
xdoc/words-9.3/名词词库.xlsx
+0
-0
未找到文件。
test/article/convert_test.go
浏览文件 @
f61ec3e4
...
...
@@ -23,124 +23,127 @@ func TestImportSqlite(t *testing.T) {
files
:=
make
([]
string
,
0
)
getExcelFilesInDir
(
"xdoc/words-9.3"
,
&
files
)
tableName
:=
"words"
seq
:=
1
ddlFields
:=
make
([]
string
,
0
)
insertSqls
:=
make
([]
string
,
0
)
colMap
:=
map
[
string
]
bool
{}
for
_
,
file
:=
range
files
{
importExcel
(
file
,
t
)
importExcel
(
file
,
tableName
,
&
seq
,
&
ddlFields
,
&
insertSqls
,
&
colMap
)
}
db
,
err
:=
sql
.
Open
(
"sqlite3"
,
constant
.
SqliteWords
)
defer
db
.
Close
()
dropSql
:=
`DROP TABLE IF EXISTS `
+
tableName
+
`;`
_
,
err
=
db
.
Exec
(
dropSql
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_drop_table"
,
tableName
,
err
.
Error
()))
return
}
ddlTemplate
:=
"CREATE TABLE "
+
tableName
+
"(
\n
"
+
"
\t
`seq` CHAR (5) PRIMARY KEY ASC UNIQUE,
\n
"
+
"%s"
+
"
\n
);"
ddlSql
:=
fmt
.
Sprintf
(
ddlTemplate
,
strings
.
Join
(
ddlFields
,
",
\n
"
))
_
,
err
=
db
.
Exec
(
ddlSql
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_create_table"
,
tableName
,
err
.
Error
()))
return
}
sql
:=
strings
.
Join
(
insertSqls
,
"
\n
"
)
_
,
err
=
db
.
Exec
(
sql
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_exec_query"
,
sql
,
err
.
Error
()))
return
}
}
func
importExcel
(
filePath
string
,
t
*
testing
.
T
)
{
func
importExcel
(
filePath
,
tableName
string
,
seq
*
int
,
ddlFields
,
insertSqls
*
[]
string
,
colMap
*
map
[
string
]
bool
)
{
excel
,
err
:=
excelize
.
OpenFile
(
filePath
)
if
err
!=
nil
{
t
.
Error
(
"fail to read file "
+
filePath
+
", error: "
+
err
.
Error
())
logUtils
.
PrintTo
(
"fail to read file "
+
filePath
+
", error: "
+
err
.
Error
())
return
}
fileName
:=
path
.
Base
(
filePath
)
fileName
=
strings
.
TrimSuffix
(
fileName
,
path
.
Ext
(
filePath
))
fileName
=
strings
.
TrimSuffix
(
fileName
,
"词库"
)
tableName
:=
getPinyin
(
fileName
)
for
_
,
sheet
:=
range
excel
.
GetSheetList
()
{
rows
,
err
:=
excel
.
GetRows
(
sheet
)
colPrefix
:=
getPinyin
(
fileName
)
for
rowIndex
,
sheet
:=
range
excel
.
GetSheetList
()
{
rows
,
_
:=
excel
.
GetRows
(
sheet
)
if
len
(
rows
)
==
0
{
continue
}
dropTemplate
:=
`DROP TABLE IF EXISTS %s;`
ddlTemplate
:=
`CREATE TABLE %s (
seq CHAR (5) PRIMARY KEY ASC UNIQUE,
%s
);`
insertTemplate
:=
"INSERT INTO %s (%s) VALUES %s"
colDefine
:=
""
colList
:=
"seq"
colList
:=
make
([]
string
,
0
)
colCount
:=
0
index
:=
0
for
colIndex
,
col
:=
range
rows
[
0
]
{
val
:=
strings
.
TrimSpace
(
col
)
if
rowIndex
==
0
&&
val
==
""
{
break
}
colCount
++
val
:=
strings
.
TrimSpace
(
col
)
colName
:=
getPinyin
(
val
)
if
colIndex
==
0
&&
colName
!=
"ci"
{
colName
=
"ci"
}
else
{
colName
=
colPrefix
+
":"
+
colName
}
if
index
>
0
{
col
Define
=
colDefine
+
",
\n
"
}
colList
=
colList
+
", "
if
(
*
colMap
)[
colName
]
==
false
{
col
Type
:=
"VARCHAR
"
colDefine
=
" "
+
"`"
+
colName
+
"` "
+
colType
*
ddlFields
=
append
(
*
ddlFields
,
colDefine
)
colType
:=
"VARCHAR"
if
colIndex
>
0
{
colType
=
"BLOB"
(
*
colMap
)[
colName
]
=
true
}
col
Define
=
" "
+
colDefine
+
"`"
+
colName
+
"` "
+
colType
col
List
=
append
(
colList
,
"`"
+
colName
+
"`"
)
colList
=
colList
+
"`"
+
colName
+
"`"
index
++
}
valList
:=
""
valList
:=
make
([]
string
,
0
)
for
rowIndex
,
row
:=
range
rows
{
if
rowIndex
==
0
{
continue
}
if
rowIndex
>
1
{
valList
=
valList
+
", "
}
valList
=
valList
+
"("
+
strconv
.
Itoa
(
rowIndex
)
+
", "
valListItem
:=
make
([]
string
,
0
)
valListItem
=
append
(
valListItem
,
strconv
.
Itoa
(
*
seq
))
*
seq
+=
1
for
i
:=
0
;
i
<
colCount
;
i
++
{
if
i
>
0
{
valList
=
valList
+
", "
}
val
:=
""
if
i
==
0
{
// word
val
:=
strings
.
TrimSpace
(
row
[
i
])
valList
=
valList
+
"'"
+
val
+
"'"
val
=
strings
.
TrimSpace
(
row
[
i
])
}
else
if
i
<=
len
(
row
)
-
1
{
// excel value
str
:=
strings
.
ToLower
(
strings
.
TrimSpace
(
row
[
i
]))
if
str
==
"y"
{
val
:=
"TRUE"
valList
=
valList
+
val
}
else
{
valList
=
valList
+
"NULL"
val
=
strings
.
ToLower
(
strings
.
TrimSpace
(
row
[
i
]))
if
val
!=
"y"
&&
val
!=
"b"
&&
val
!=
"f"
&&
val
!=
"m"
{
val
=
""
}
}
else
{
val
List
=
valList
+
"NULL
"
val
=
"
"
}
valListItem
=
append
(
valListItem
,
"'"
+
val
+
"'"
)
}
valList
=
valList
+
")"
}
dropSql
:=
fmt
.
Sprintf
(
dropTemplate
,
tableName
)
ddl
:=
fmt
.
Sprintf
(
ddlTemplate
,
tableName
,
colDefine
)
insertSql
:=
fmt
.
Sprintf
(
insertTemplate
,
tableName
,
colList
,
valList
)
db
,
err
:=
sql
.
Open
(
"sqlite3"
,
constant
.
SqliteWords
)
defer
db
.
Close
()
_
,
err
=
db
.
Exec
(
dropSql
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_drop_table"
,
tableName
,
err
.
Error
()))
return
}
_
,
err
=
db
.
Exec
(
ddl
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_create_table"
,
tableName
,
err
.
Error
()))
return
valList
=
append
(
valList
,
"("
+
strings
.
Join
(
valListItem
,
", "
)
+
")"
)
}
_
,
err
=
db
.
Exec
(
insertSql
)
if
err
!=
nil
{
logUtils
.
PrintTo
(
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_exec_query"
,
insertSql
,
err
.
Error
()))
return
}
insertTemplate
:=
"INSERT INTO `"
+
tableName
+
"` (`seq`, %s) VALUES %s;"
insertSql
:=
fmt
.
Sprintf
(
insertTemplate
,
strings
.
Join
(
colList
,
", "
),
strings
.
Join
(
valList
,
", "
),
)
*
insertSqls
=
append
(
*
insertSqls
,
insertSql
)
}
}
...
...
tmp/cache/.words.db
浏览文件 @
f61ec3e4
无法预览此类型文件
xdoc/words-9.3/名词词库.xlsx
浏览文件 @
f61ec3e4
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录