首页 > 解决方案 > SQL Developer:查询结果的导出不保留data_type

问题描述

我正在开发一个无法直接连接到数据库的项目。我写了一个查询来获取我需要的所有数据,以便我可以导出它们。此 SQL 查询的结果具有很好的 data_type,但是当我导出结果时,我选择了insert格式,此时所有 data_type 都切换为字符串。

导出数据的示例,其中数字为字符串格式,而在原始数据库和查询的响应中,类型受到尊重:

Insert into MY_TABLE (POSTCODE, NUMBER, ADRESS, CODE, CITY, VALUE) values ('90000', '303', 'HultonLane', '2845', 'BOLTON', '3');

您知道是否有任何方法可以从原始数据库中导出具有相同 data_type 的数据?

感谢您的帮助,如果您需要更多信息,我会提供给他们。

标签: sqldatabaseoracle-sqldeveloper

解决方案


这种行为(或错误?)存在于例如 SQL Developer 版本 19.4 中,但在 20.2 中已修复,因此 - 如果您使用的是较低版本,我建议您升级。


这是一个示例,基于 Scott 的DEPT表,其中DEPTNO列的数据类型为NUMBER. 结果 - 当这个:

desc dept;
select /*insert*/ * from dept;

作为脚本运行 - 是:

Name   Null?    Type         
------ -------- ------------ 
DEPTNO NOT NULL NUMBER       
DNAME           VARCHAR2(20) 
LOC             VARCHAR2(20) 
REM INSERTING into DEPT
SET DEFINE OFF;
Insert into DEPT (DEPTNO,DNAME,LOC) values (10,'ACCOUNTING','NEW YORK');
Insert into DEPT (DEPTNO,DNAME,LOC) values (20,'RESEARCH','DALLAS');
Insert into DEPT (DEPTNO,DNAME,LOC) values (30,'SALES','CHICAGO');
Insert into DEPT (DEPTNO,DNAME,LOC) values (40,'OPERATIONS','BOSTON');

如您所见,所有DEPTNO值都是数字。在 19.4 中,您将拥有例如

Insert into DEPT (DEPTNO,DNAME,LOC) values ('10','ACCOUNTING','NEW YORK');

( '10', 一个字符串)。

您无需对此做任何事情;无论您运行这样的select语句,还是右键单击表名和“导出”数据作为插入语句,结果都是相同的。

顺便说一句,我们的版本匹配:我的是 20.2.0.175,构建 175.1842。


推荐阅读