在 Standard 或 Advanced 许可等级下可用。
您可使用 SQL 创建表文件。如果表中包含空间列,其会被视为一个空间表。而且,也可使用 SQL 语句向非空间表和空间表中填充数据。只要表存在,即可将其注册到地理数据库,以便其可以参与地理数据库功能。
如果要使用自定义应用程序创建空间表或非空间表,或者从其他机构或承建商处接收数据库表,而且还想要充分利用地理数据库和 ArcGIS 的功能,则可能需要执行上述操作。
同样,可以使用 SQL 定义空间和非空间表格上的视图。如果视图定义包括一个包含可用作对象 ID 的唯一值的整型列,则可以将该视图注册到地理数据库。您可通过注册视图存储与视图内容有关的信息(例如范围和几何类型)以及定义视图上的元数据。
本工作流将介绍使用 SQL 客户端创建非空间表和空间表、向表添加数据以及将表注册到地理数据库。
使用 SQL 创建非空间表
- 打开 SQL 客户端,以具有数据库中创建表权限的用户身份登录到数据库。
- 使用 CREATE TABLE SQL 语句创建一个非空间表 patients,该表包含具有以下名称的列:PID、f_name、l_name 和 dwel_id。
Oracle
CREATE TABLE patients (PID integer NOT NULL, f_name nvarchar2(25), l_name nvarchar2(38), dwel_id integer);
PostgreSQL
CREATE TABLE patients (PID integer NOT NULL UNIQUE, f_name varchar(25), l_name varchar(38), dwel_id integer);
Db2
CREATE TABLE patients (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer)
Informix
CREATE TABLE patients (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer);
使用 SQL 向非空间表中添加数据
使用 SQL INSERT 语句向 patients 表中添加记录。
- 向 patients 表中插入四条记录:
Oracle
INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
PostgreSQL
INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
Db2
INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301) INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301) INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001) INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601)
Informix
INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
使用 SQL 创建空间表
还可使用 CREATE TABLE 语句创建包含空间列的表。
- 创建表 outbreaks,该表包含整型的 OID 列、整型的 dwel_id 列、字符串型的 address 列、整型的 city_code 和 ST_Geometry loc 列:
Oracle
CREATE TABLE outbreaks (OID integer NOT NULL, address nvarchar2(120), city_code integer, loc sde.st_geometry);
PostgreSQL
CREATE TABLE outbreaks (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, loc sde.st_geometry);
Db2
CREATE TABLE outbreaks (OID integer NOT NULL, address varchar(120), city_code integer, loc db2gse.st_geometry)
Informix
CREATE TABLE outbreaks (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, loc st_geometry);
使用 SQL 向空间表中添加数据
向 outbreaks 表中插入三条记录。
- 使用 INSERT SQL 语句和 ST_Point 函数向 outbreaks 表中添加记录:
Oracle
INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (1, '1420 kirchestrasse', 43, sde.st_geometry (0.00003, 0.00051, null, null, 4326) ); INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (2, '638 villa arbol', 10, sde.st_geometry (0.00020, -0.00029, null, null, 4326) ); INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (3, '5579 riverview dr', 96, sde.st_geometry (-0.00048, -0.00009, null, null, 4326) );
PostgreSQL
INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (1, '1420 kirchestrasse', 43, sde.st_point (0.00003, 0.00051, null, null, 4326) ); INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (2, '638 villa arbol', 10, sde.st_point (0.00020, -0.00029, null, null, 4326) ); INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (3, '5579 riverview dr', 96, sde.st_point (-0.00048, -0.00009, null, null, 4326) );
Db2
INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (1, '1420 kirchestrasse', 43, db2gse.st_point (0.00003, 0.00051, null, null, 0) ) INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (2, '638 villa arbol', 10, db2gse.st_point (0.00020, -0.00029, null, null, 0) ) INSERT INTO OUTBREAKS (OID, address, city_code, loc) VALUES (3, '5579 riverview dr', 96, db2gse.st_point (-0.00048, -0.00009, null, null, 0) )
Informix
INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (1, '1420 kirchestrasse', 43, st_point (0.00003, 0.00051, null, null, 0) ); INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (2, '638 villa arbol', 10, st_point (0.00020, -0.00029, null, null, 0) ); INSERT INTO outbreaks (OID, address, city_code, loc) VALUES (3, '5579 riverview dr', 96, st_point (-0.00048, -0.00009, null, null, 0) );
将表注册到地理数据库
可将表注册到 ArcGIS Desktop 中的地理数据库。
下面一组步骤介绍了如何在 ArcGIS Desktop 中注册到地理数据库:
- 打开注册到地理数据库工具。
可以搜索该工具,在“数据管理”工具箱的“地理数据库管理”工具集中将其打开,也可在 ArcMap 的目录树中右键单击数据库连接下的表或视图,然后单击注册到地理数据库。
- 启动 ArcGIS Desktop 客户端并连接到包含要注册的表或视图的企业级地理数据库。
请以表或视图所有者的身份连接,因为只有所有者方可将其注册到地理数据库。
- 右键单击 patients 表,然后单击注册到地理数据库。
- 右键单击 outbreaks 表,然后单击注册到地理数据库。