skywind3000 / ECDICT

Free English to Chinese Dictionary Database
MIT License
5.93k stars 1.04k forks source link

不会python,navicat将csv直接导入mysql报错sw没有默认值 #112

Closed Chef5 closed 1 year ago

Chef5 commented 1 year ago

不太会python,因此看不太懂作者给的py。 我根据 #78 ,创建了库和表, 然后尝试直接将仓库的ecdict.csv通过navicat的导入向导导入到mysql,但是会报错sw无默认值。 查看了一下具体原因,仓库的ecdict.csv是没有sw的,虽然可以直接将表中的sw设置个默认值,但查看了sw的作用后,我还是想使用sw。 看了几个其他的issue,于是我弄了一个折中的方法。

Chef5 commented 1 year ago

创建mysql数据库和表:

CREATE DATABASE dict358 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
create table dict358.stardict
(
    id int auto_increment primary key,
    word varchar(256) not null,
    sw varchar(128) not null,
    phonetic varchar(128) null,
    definition text null,
    translation text null,
    pos varchar(32) null,
    collins int default 0 null,
    oxford int default 0 null,
    tag varchar(128) null,
    bnc int default NULL null,
    frq int default NULL null,
    exchange text null,
    detail text null,
    audio text null,
    constraint word unique (word)
);

打开仓库的stardict.py,最下面追加代码:(参考的 #10 )

srcname='ecdict.csv'
distname='ecdict.db'
convert_dict(distname,srcname)

控制台运行:python3 /path/to/xxx/stardict.py,会在当前目录生成ecdict.db

navicat连接ecdict.db,并将stardict表导出为new-ecdict.csv

再将new-ecdict.csv导入到mysql表就可以了。