hungtcs / traditional-chinese-calendar-database

:calendar: 中国农历数据库 1901~2100年
https://hungtcs.github.io/traditional-chinese-calendar-database/examples/index.html
MIT License
44 stars 4 forks source link

数据修正建议 #6

Open yindz opened 3 years ago

yindz commented 3 years ago

要满足真实场景使用的话,有小部分数据是需要修正的(如繁简转换,属相不准确等)。我自己通过数据库方式做了修正,语句如下:

CREATE TABLEtmp_calendar( dayvarchar(255) DEFAULT NULL, gregorianYearvarchar(255) DEFAULT NULL, gregorianMonthvarchar(255) DEFAULT NULL, gregorianDatevarchar(255) DEFAULT NULL, lunarYearvarchar(255) DEFAULT NULL, lunarMonthvarchar(255) DEFAULT NULL, lunarDatevarchar(255) DEFAULT NULL, lunarLeapMonthvarchar(255) DEFAULT NULL, solarTermvarchar(255) DEFAULT NULL, zodiac` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

导入

LOAD DATA INFILE '/path-to/all.csv' INTO TABLE tmp_calendar FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

修正

UPDATE tmp_calendar SET lunarMonth=REPLACE(lunarMonth, '閏', '闰'); UPDATE tmp_calendar SET solarTerm=REPLACE(solarTerm, '驚蟄', '惊蛰'); UPDATE tmp_calendar SET solarTerm=REPLACE(solarTerm, '穀雨', '谷雨'); UPDATE tmp_calendar SET solarTerm=REPLACE(solarTerm, '小滿', '小满'); UPDATE tmp_calendar SET solarTerm=REPLACE(solarTerm, '芒種', '芒种'); UPDATE tmp_calendar SET solarTerm=REPLACE(solarTerm, '處暑', '处暑'); UPDATE tmp_calendar SET zodiac=REPLACE(zodiac, '龍', '龙'); UPDATE tmp_calendar SET zodiac=REPLACE(zodiac, '馬', '马'); UPDATE tmp_calendar SET zodiac=REPLACE(zodiac, '雞', '鸡'); UPDATE tmp_calendar SET zodiac=REPLACE(zodiac, '豬', '猪'); UPDATE tmp_calendar SET zodiac=REPLACE(zodiac, '犬', '狗'); UPDATE tmp_calendar SET zodiac='鸡' WHERE zodiac='' AND lunarYear LIKE '%酉';

重新导出

SELECT 'day','gregorianYear','gregorianMonth','gregorianDate','lunarYear','lunarMonth','lunarDate','lunarLeapMonth','solarTerm','zodiac' FROM DUAL UNION SELECT day,gregorianYear,gregorianMonth,gregorianDate,lunarYear,lunarMonth,lunarDate,lunarLeapMonth,solarTerm,zodiac FROM tmp_calendar INTO OUTFILE '/path-to/new.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

DROP TABLE tmp_calendar; `

hungtcs commented 3 years ago

@yindz 因为数据是来自香港天文台,所以文本部分保留了香港繁体,。实际使用中,需要繁转简的需求可以自行添加映射,后期接口或数据可能提供简体版本。 数据错误问题我会尽快修复,谢谢