建视频网站多少钱,服务器用来做网站空间,怎么做网站优化排名,wordpress更新定位插件【摘要】在生产系统使用过程中#xff0c;常常会有从数据库中导出数据的需求。支持多种导出方式#xff0c;例如使用spool、utl_file等内置方法导出#xff0c;利用plsql developer、等第三方工具等。【正文】Oracle支持多种导出方式#xff0c;包括自带的工具包和第三方工…【摘要】在生产系统使用过程中常常会有从数据库中导出数据的需求。支持多种导出方式例如使用spool、utl_file等内置方法导出利用plsql developer、等第三方工具等。【正文】Oracle支持多种导出方式包括自带的工具包和第三方工具。不同工具有各自的适用场景这里对常见的四种方案进行简要分析一利用utl_file将执行结果导出为.csv文件1.1方法描述使用流程1、定义字段列表(根据实际情况增减字段)2、定义目录对象(如果没有需要先通过create directory创建)3、定义输出文件名称(不用写文件后缀名)4、定义输出表格标题(可自定义显示的字段名)5、设置执行的6、映射字段列表(依次给字段赋值)7、输出每一行数据。1.2操作演示这里演示如何通过sqlplus工具将指定SQL语句的执行结果导出到.csv文件。指定SQL:selectOWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS fromdba_objects;说明dba_objects包含18万行数据。脚本内容--脚本内容开始-----会话设置SETSERVEROUT ON;--打开输出提示SETTIMING ON;--打开计时器--定义变量DECLAREDIRPATHVARCHAR2(4000);--目录对象OUTFILEVARCHAR2(4000);--输出文件名称VSFILEUTL_FILE.FILE_TYPE; --定义用于接收文件句柄的类型V_CNTNUMBER;--统计每个文件加载行数--定义字段列表--根据实际情况增减字段为了方便可以采用Cn的定义方式n为查询结果的列数C1VARCHAR2(4000);C2VARCHAR2(4000);C3VARCHAR2(4000);C4VARCHAR2(4000);C5VARCHAR2(4000);C6VARCHAR2(4000);BEGIN--设置dbms_output输出的缓冲大小--DBMS_OUTPUT.ENABLE(1000000); --避免报错ORA-20000:ORU-10027: BUFFER OVERFLOW, LIMIT OF 10000 BYTES--定义目录对象DIRPATH: EXPDATA; --这里对应OS上的目录“D:\expdata”--定义输出文件名称OUTFILE: dba_objects;--开始打开文件这里使用DIRECTORY参数指定输出文件的存放位置VSFILE : UTL_FILE.FOPEN(DIRPATH, OUTFILE ||.CSV, W);/*参数介绍UTL_FILE.FOPEN(LOCATION IN VARCHAR2, FILENAMEIN VARCHAR2, OPEN_MODE IN VARCHAR2) RETURN FILE_TYPE;LOCATION是文件存放的DB目录名称-------执行用户要有对DIR目录的读写权限FILENAME是文件名OPEN_MODE是打开模式(R是读文本W是写文本A是附加文本参数不分大小写如果指定A但是文件不存在它会用W先创建出来W有覆盖的功能)*/--定义输出表格标题UTL_FILE.PUT_LINE(VSFILE,OWNER, OBJECT_NAME,OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS);--每个文件加载行数[每次进入循环都赋值为0].排除标头部分V_CNT : 0;--设置执行的SQL语句--将FOR循环查询的内容FOR SQL_ IN (select OWNER, OBJECT_NAME,OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from dba_objects) LOOP--映射字段列表C1: SQL_.OWNER;C2: SQL_.OBJECT_NAME;C3: SQL_.OBJECT_TYPE;C4: SQL_.CREATED;C5: SQL_.LAST_DDL_TIME;C6: SQL_.STATUS;--输出每一行数据/*UTL_FILE.PUT_LINE若需要EXCEL格式需要每字段用逗号隔开,,WINDOWS EXCEL工具打开默认就是EXCEL格式*/UTL_FILE.PUT_LINE(VSFILE,C1 || , || C2 || , ||C3 || , || C4 || , ||C5 || , ||C6);--计数器每一条数据都循环1V_CNT : V_CNT 1;END LOOP;--打印每个文件LOAD ROWSDBMS_OUTPUT.PUT_LINE( OUTFILE || .CSV文件LOAD ROWS || V_CNT);--放在LOOP后否则报错ORA-29282:文件ID无效/ORA-06512:在SYS.UTL_FILE, LINE 878--若不写如下 强制输出缓冲/关闭句柄可能存在导出数据少于查询条目UTL_FILE.FFLUSH(VSFILE);UTL_FILE.FCLOSE(VSFILE);END;--脚本内容结束---上述脚本已经通过多次测试成功且每一步都有详细说明用户可根据实际的SQL语句进行设当调整即可实现数据导出到excel。下面是执行成功截图此时可在D:\expdata目录下找到导出的.csv文件如二利用plsqldeveloper将执行结果导出为.csv文件2.1方法描述先执行要查询的SQL语句(执行完能看到有结果即可无需显示所有数据)然后点击“export query result...”按钮选择“CSV file”(或需要的文件类型)在弹出的对话框输入文件名后点击“保存”按钮即可。2.2操作演示这里演示如何通过plsqldeveloper工具将指定SQL语句的执行结果导出到.csv文件。指定SQL:selectOWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS fromdba_objects;说明dba_objects包含18万行数据。导出完成后可在指定的目录下找到导出的.csv文件。三利用excel连接数据库进行导出3.1方法描述Excel可通过ODBC驱动直接写SQL语句查询Oracle中数据。3.2操作演示这里演示如何通过excel连接数据库进行数据导出。3.2.1配置ODBC数据源开始-控制面板-系统和安全-管理工具-ODBC数据源(可根据自己的情况选择32位还是64位)。因安装的是Oracle11.2.0.4 64位故选择ODBC数据源(64位)显示如下进入Oracle ODBC配置项需要填写的有四项Data Source Name其实就是给该数据源取一个名字在本例中我取的是“test”。Description对该数据源的描述可写可不写。TNS Service Name即网络服务名这个是在Oracle客户端tnsnames.ora中定义这里的是“excel_to_oracle”。tnsnames.ora中对应的内容可能如下excel_to_oracle(DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 182.17.6.5)(PORT 1521))(CONNECT_DATA (SERVER DEDICATED)(SERVICE_NAME orcl)))User ID:用户名该用户必须对所查询的表有可读权限。3.2.2在Excel中进行查询操作注这里的Excel版本是2016。2.1、数据-获取外部数据-自其他来源-来自Microsof Query如图所示2.2、选择数据源“test”点击“确认”。2.3、输入scott用户的密码点击“OK”。这里可能会卡一会儿2.4、选择需要操作的表2.5、可根据实际情况筛选数据这里直接下一步2.6、可根据实际情况进行排序这里直接下一步2.7、将数据返回microsoft excel完成设置2.8、在最后弹出的对话框设置好显示方式和放置位置点击确定即可下可以看到数据已显示到excel表格中如果在microsoftquery中进行操作可以点击如下图的按钮将数据返回到excel最后可通过excel保存查询数据。四利用spool打印数据到指定文件4.1方法描述在sqlplus工具中通过spool命令可保存sql执行结果到指定文件。4.2操作演示这里演示如何通过spool格式化输出scott用户下的tab表数据并保存到指定文件。conn scott--输入口令:--已连接。--格式化输出结果setlinesize 200set termoff verify off feedback off pagesize 6000set markuphtml on entmap ON spool on preformat off--利用spool命令说明生成的xls表的名称spoolD:\expdata\tables.xls--执行查询语句select *from tab;--保存文件spool offexit导出完成后可在指定的目录下找到导出的.xls文件,如