准备自己做个一言 API,需要一个数据库(单张表格也勉强算是吧 )。
呐呐,我跟你讲,通常只有水文里我才会配音乐?
常见的数据库有 SQL 系的 MySQL、MariaDB,微软家的 Access(这个相信大家小学电脑课都折腾过吧 ),以及一些通过 JSON 构建的小众数据库,比如 Lowdb。
SQL + PHP 的架构是目前 web 开发最常见的,并且拥有大量相基于二者的开源项目,比如本博客使用的 WordPress。然而 SQL 并没有什么好的的可视化操作工具,对于如此简单的表单数据,其实犯也不上折腾这么麻烦的东西啦 。
Access 作为 Microsoft Office 组件之一,可视化操作自然很方便,但是 web 开发中使用的话需要搭配微软自家的 ASP 作为网站后台脚本语言,而 ASP 通常又得运行在微软家的 IIS 上,据说微软这一套产品性能都很高。然而我服务器并不是 Windows 的,pass。
Lowdb,暂时还不会用...
忽然想到 R 语言里面常用 read.table
函数读取 CSV 表格,何不试试用 PHP 读取呢?
看了一下其实已经有现成的轮子了,PHP 中有 'fgetcsv' 这个函数可以读取 CSV 文件(当然喽你要直接读取 xlsx 文件也不是不行,有个叫 PHPExcel 的 library 就可以)。下面就是我将 CSV 导入到 PHP array 的方法:
// 读取 csv 文件
$file = fopen("hitokoto.csv","r");
// 抽取 csv 第一行,准备作为 key
$headers = fgetcsv($file,0);
// 初始化 array
$data = array();
// 通过 fgetcsv 逐行将抽取 csv 数据写入 array
while ($row = fgetcsv($file,0)) {
// 将第一行的 key 与 value 对应
$data[] = array_combine($headers, $row);
}
// 关闭 csv 文件
fclose($file);
// 打印 array
var_dump($data);
fgetcsv
的详细参数可以参考文档。注意在 PHP 5.1.0 之后如果要忽略第二个参数 length
必须将其设为 0,否则报错。Excel 默认导出的分隔符与fgetcsv
默认的分隔符一样都是逗号,所以第三个参数留空即可。
用以上方法做了一个一言接口,下面是食用方法:
接口:https://api.2heng.xin/hitokoto/
可选参数:
参数 | 返回 |
---|---|
encode=json | 返回用unicode转码的json文本 |
encode=text | 返回不用unicode转码的json文本 |
id=x | 按 id 获取,x ∈ Z⁺ |
参数添加方法:
第一个参数前面加上 ?
添加至接口后:https://api.2heng.xin/hitokoto/?encode=text
第二个参数与第一个参数用 &
分隔:
https://api.2heng.xin/hitokoto/?encode=text&id=1
如何在网页中调用?参考我的这篇文章。
以上的句子大部分是网上的,并不是很满意,以后二刷樱花庄的时候再自己整理吧,计划做成双语版。
「樱花庄的白猫」原创文章:《用 Excel 构建数据库》,转载请保留出处!https://2heng.xin/2017/12/28/build-a-data-base-with-excel/
Q.E.D.
Comments | 5 条评论
博主 巭孬嫑烎
100000
博主 guo
微软家不是SQL Server吗hhh Office带的Access大概是针对中小型?
博主 周可乐
虽然Excel可以当数据库来用,我还是选择Oracle!
博主 BILIBIBI
CSV性能好差的
博主 Mashiro
@BILIBIBI 是的,每次都要把数据全部读到内存里。不过我这里也就几十行数据。。方便我管理就行