其他
软件应用 | 如何将政府部门提供的数据库文件转化为STATA可用的数据表
作为一名在读研究生,常常需要和导师一起承接课题项目,而作为课题的承担方,也就需要向地方政府提出一些必要的数据需求,以便进行后续的数据分析和描述。
但是对于政府机构的信息管理部门来说,能够操作这些数据的工程师或程序员们往往无法准确理解学者进行数据分析前对数据格式的要求。而出于工作便利的需要,他们会提供一份或多份带有导出日志的Dump数据文件,这些Dump文件既不能被直接打开预览,也无法导入STATA操作,因此我们需要对拿到手的Dump文件进行格式转化。
作为一名sql的初学者,虽然无需进行增删改查等操作,但进行一次数据的导入导出也需要一定的学习成本,网上提供的代码也只能解决某一个步骤中的一个具体问题。因此,本文基于网上公开的开源代码和自身实践,提出了一个解决政府部门提供的数据库文件向STATA分析可用的数据表转换问题的整体方案。
以便各位有相应数据格式转换需求的教师、学者们浏览,以备不时之需。
下载必要的数据库和执行软件
Oracle 11g版:用于存放数据
Sql Developer:用于执行数据转化操作
将Dump文件导入到Oracle数据库
sqlplus
*yoursusername
*yourspassword
CREATE BIGFILE tablespace DATA
logging
datafile 'yours file route'
size 8000m
autoextend on
next 50m maxsize UNLIMITED
extent management local;
**表空间已创建
**需要注意的是,表空间一旦创建,将占据电脑硬盘的实际存储空间,因此若您获得的数据集量并不大,就无必要设置很大的表空间
create or replace directory dataroute as 'yours file route';
**目录已创建
alter database datafile 'yours file route' resize 20000m;
**因为后续导入出现了表空间不足的问题,因此这里重新设置表空间
impdp yours username/yours password DIRECTORY=dataroute
DUMPFILE=file1.dump,file2.dump,file3.dump,file4.dump
REMAP_SCHEMA = ‘Oracle服务端执行导出命令的用户名:您的用户名’
**因为我这里导出的dump是一整个文件分割开的多个表格,所以这里的文件把所有的表都写上了,否则会报错
将导入的Dump文件导出为CSV文件
其 他
1、增加数据文件
ALTER TABLESPACE ***_TRD ADD DATAFILE
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF’ SIZE 1024M;
2、增加数据文件并允许自动增长
ALTER TABLESPACE ***_TRD ADD DATAFILE
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF’ SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;
3、允许已存在的数据文件自动增长
ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF’
AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;
4、手工改变已存在数据文件的大小
ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF’
RESIZE 10240M;
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
alter tablespace tablespace_name offline;
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
SELECT Upper(A.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - A.TOTAL_BYTES "已使用空间(M)",
To_char(Round((D.TOT_GROOTTE_MB - A.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') || '%' "使用比",
A.TOTAL_BYTES "空闲空间(M)",
A.MAX_BYTES "最大块(M)",
D.AUTOEXTENSIBLE "是否自增长",
D.incrementSize "自增长大小(M)",
D.CREATE_TIME "创建时间"
FROM (select T.TABLESPACE_NAME,
Round(Sum(T.BYTES) / (1024 * 1024), 2) AS TOTAL_BYTES,
Round(Max(T.BYTES) / (1024 * 1024), 2) AS MAX_BYTES
from SYS.DBA_FREE_SPACE t
group by t.TABLESPACE_NAME) A,
(SELECT B.autoextensible,
Round(Sum(B.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB,
Round(B.increment_by *
(select value
from v$parameter
where name = 'db_block_size') / (1024 * 1024),
2) AS incrementSize,--自增长大小为数据库中数据块的个数,一个数据块一般为8k
B.TABLESPACE_NAME,
min(C.CREATION_TIME) CREATE_TIME--获取创建时间,如果有多个数据文件,获取到最初时间
FROM SYS.DBA_DATA_FILES B, v$DATAFILE C
WHERE B.file_id = C.FILE#
group by B.TABLESPACE_NAME, B.autoextensible, B.increment_by) D
WHERE A.TABLESPACE_NAME = D.TABLESPACE_NAME
order by D.CREATE_TIME;
点击阅读原文,进入CCAD数据库
·END·
星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
供稿丨在读打工人
来源丨启研学社
欢迎扫描👇二维码添加关注