SQL Server2008 表空间化

本文以SQL Server2008为例,描述普通属性表转换空间表的过程。

参考资料:微软官方SQL SERVER2008文档

需求:

在普通属性表上增加空间字段,并将表中已有的经纬度坐标,转存为空间数据,方便后续使用arcmap等工具对数据加载并发布服务。

解决:

  1. 新建geometry类型字段,取名为geom
  2. 更新现有属性数据到geom字段中,这里假设经纬度坐标存放字段分别为x,y类型都是numeric

    update tablename set GEOM=geometry::STGeomFromText(‘POINT(‘+convert(varchar,x)+‘ ‘+convert(varchar,y)+‘)‘,4326) where x is not null and y is not null;

    此处注意要将numeric类型用convert函数强制转换为varchar.

    更新期间遭遇 数据库日志文件已满的错误,在此一并记录下来。

    解决办法:

    将数据库切换到 simple 恢复模式 alter database dbname set recovery simple
    再将数据库切换回原来的恢复模式 alter database dbname set recovery full

  3. 对geom字段创建空间索引

    create spatial index idx_tablename_geom on tablename(geom) with (Bounding_Box=(xmin=-180,ymin=-90,xmax=180,ymax=90));

时间: 2024-10-10 15:42:38

SQL Server2008 表空间化的相关文章

Oracle使用SQL传输表空间

源环境:RHEL 6.4 + Oracle 11.2.0.4目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的环境. 1.创建目录 2.检查表空间自身的一致性 3.expdp导出表空间的元数据 4.转储文件和数据文件复制到目的数据库服务器 5.在目的数据库上,impdp导入表空间 6.表空间设为读写(源数据库和目的数据库) 1.创建目录 --源数据库 create directory src_dpump_dir

SQL Server2008表名中含“.”号处理方法

在做简单的报表呈现的时候遇到数据库的表名是XX.XXX这种命名形式(数据库用的是SQL Server2008,"."是合法的字符,持久层框架是hibernate),如果用@Entity注释,在取数据的时候就会抛出sql异常:对象名无效,原因是hibernate将"."号后面的作为了表名进行hql语句的拼接.由于数据库是设计好不能更改表名的了,所以只好尝试各种方法. 首先我百度了很久,没找到有出现这种情况的(大概是很少有人这样设计表名),于是我尝试使用转义.单引号.双

DBA常用SQL之表空间与数据文件

select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name; 1.查看表空间的名称及大小 select a.tablespace_name, a.bytes / 1024 / 1024 "Sum

IMP跨平台迁移数据库SQL生成SQL方式表空间创建脚本

我们在利用EXP/IMP进行跨平台迁移的时候,由于表空间路径变更,需要先手工创建在目标端创建与源端一致的表空间和数据文件,以下为创建生成语句的脚本. 一.在源端数据库执行以下命令,生成创建脚本 select 'create tablespace ' || b.NAME || ' DATAFILE ' || chr(39) || a.NAME || chr(39) || ' SIZE ' || a.BYTES / 1024 / 1024 || ' m;' from v$datafile a, v$

zbb20170816 oracle Oracle 查看表空间、数据文件的大小及使用情况sql语句

oracle Oracle 查看表空间.数据文件的大小及使用情况sql语句 --表空间 --1G=1024MB --1M=1024KB --1K=1024Bytes --1M=11048576Bytes --1G=1024*11048576Bytes=11313741824Bytes SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) &qu

oracle表空间的创建、修改、删除及一些参数解释

创建表空间 方法1:代码创建,如下:PL/SQL 建立表空间(一般建N个存数据的表空间和一个索引空间):      create tablespace 表空间名      datafile ' 路径(要先建好路径)\***.dbf  ' size *M      tempfile ' 路径\***.dbf ' size *M      autoextend on  --自动增长      extent management localSQL> / 表空间已创建.       方法2用sqlplu

oracle数据库报错ora-01653表空间扩展失败解决方案

1)ora-01653错误截图: 可以看到有两张表的insert受到了影响,都是在USERS表空间里.用以下SQL查看表空间使用情况: SELECT a.tablespace_name "表空间名",a.bytes / 1024 / 1024 "表空间大小(M)",(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)", b.bytes / 1024 / 1024 "空闲空间(M)",roun

Oracle的表空间

1. oracle表空间:数据库的逻辑存储空间. 2. 表空间分类: (1), 永久表空间:用于存放数据库中要永久花存储的对象,比如表,视图等. (2),临时表空间: 中间存储过程,比如临时变量. (3),UNDO表空间: 用于保存事务所修改的备份.防止事务的回滚等操作. 3. 查看用户的表空间: 两个数据字典: (1),dba_tablespaces:针对系统管理员用户. SQL> desc dba_tablespaces 名称 是否为空? 类型 -----------------------

Oracle数据库个人整理常用的表空间、用户、授权操作

1.表空间相关sql -- 创建表空间名为test_tablespace_name,存储位置为D:\DB\oradata\orcl\test_tablespace_name.dbf,大小为128m,无限制,超出后每次增长10m create tablespace test_tablespace_name datafile 'D:\DB\oradata\orcl\test_tablespace_name.dbf' size 128m autoextend on next 10m maxsize u