1 2 3 4 5 6 7 8 9 10 下一页 当一个 Web 页面或服务提供数据时,用户特别喜欢使用电子表格的格式获取数据,至少是可以轻松载入电子表格的格式。本文展示如何使用以下两种方法生成 Open Document Format (ODF) 电子表格文件(ODS):一是按字节顺序逐一创建,这需要研究 ODS 文件的内部结构;二是通过可以简化工作的特定库。您还有机会了解到 CSV 文件的创建过程 — 不只因为它们是一种 “最小公分母” 交换格式,还因为您可以将它们自动转换为 ODS 文件。 常用缩略词 CSV:逗号分隔值 FIPS:联邦信息处理标准 ISO:国际标准化组织 XML:可扩展标记语言 开始之前 首先要获取一些数据。我使用一个大约包含 300 万条记录的简单数据库(参见 清单 1)— 包含全世界各个国家、地区和城市。我首先从一个包含世界各个城市的自由表开始,然后添加 ISO 3166 国家代码表以及 ISO 3166-2 和 FIPS 10-4 地区代码表,因为美国使用早期的代码(而不是后来的更标准的代码)。我添加 completeCities 视图只是为了简化代码示例。您至少需要理解以下几点: 国家 通过一个代码(比如 UY 代表乌拉圭)识别并有一个名称。 国家包含多个地区,地区通过一个代码(在一个国家内是惟一的)识别并有一个名称。 城市 位于一个国家的某个地区并拥有一个名称(有两种名称版本:一个简单的、无重音的 ASCII 名称和一个外国字符名称),一个人口数(如果已知)和地理坐标。 清单 1. 创建一个用于查询的视图 CREATE DATABASE world DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE world; CREATE TABLE countries ( countryCode char(2) NOT NULL, countryName varchar(50) NOT NULL, PRIMARY KEY (countryCode), KEY countryName (countryName) ); CREATE TABLE regions ( countryCode char(2) NOT NULL, regionCode char(2) NOT NULL, regionName varchar(50) NOT NULL, PRIMARY KEY (countryCode,regionCode), KEY regionName (regionName) ); CREATE TABLE cities ( countryCode char(2) NOT NULL, cityName varchar(50) NOT NULL, cityAccentedName varchar(50) NOT NULL, regionCode char(2) NOT NULL, population bigint(20) NOT NULL, latitude float(10,7) NOT NULL, longitude float(10,7) NOT NULL, KEY `INDEX` (countryCode,regionCode,cityName), KEY cityName (cityName), KEY cityAccentedName (cityAccentedName) ); CREATE VIEW completeCities AS SELECT co.countryCode AS countryCode, co.countryName AS countryName, re.regionCode AS regionCode, re.regionName AS regionName, ci.cityName AS cityName, ci.population AS population, ci.latitude AS latitude, ci.longitude AS longitude FROM cities ci JOIN regions re ON re.countryCode=ci.countryCode AND re.regionCode=ci.regionCode JOIN countries co ON co.countryCode=re.countryCode ORDER BY 2,4,5;
(责任编辑:admin) |