python - 将多个数据帧列 int64 dtype 转换为相当于 oracle 的 NUMBER(20,3) 数据类型
问题描述
我正在尝试在 oracle DB 表中插入数据框,但表中的某些列的数据类型为NUMBER(20,3)
我假设这是 float 。
如何将数据类型为int64的列转换为NUMBER(20,3)等效项,因为它给出了无效标识符错误。
解决方案
number(20, 3)
在 Oracle 中表示该列接受总共有 20 位数字的数值,而这 20 位中的 3 位保留给小数。例如:
SQL> create table test (id number, value number(20, 3));
Table created.
让我们插入一些值:
SQL> insert into test (id, value) values (1, 12.43);
1 row created.
SQL> insert into test (id, value) values (2, 12.4356);
1 row created.
SQL> insert into test (id, value) values (3, 12345678901234567.987);
1 row created.
表内容:没有惊喜:
SQL> select * from test;
ID VALUE
---------- ----------
1 12,43
2 12,436
3 1,2346E+16
如果插入超过 3 个十进制数字怎么办?Oracle 将执行回合:
SQL> insert into test (id, value) values (4, 12.4327);
1 row created.
但是,您报告了无效标识符错误。这与您插入的内容无关,而是无效的列名。看看:我将id
列“重命名”为idxyz
Oracle 引发了您提到的错误:
SQL> insert into test (idxyz, value) values (5, 123);
insert into test (idxyz, value) values (5, 123)
*
ERROR at line 1:
ORA-00904: "IDXYZ": invalid identifier
SQL>
因此,您使用的检查语句看起来像是拼错了一个(或多个)列名。注意列名周围的双引号(在 Oracle 中,我们通常不使用它们)并且 - 如果您确实有双引号 - 也要注意字母大小写。
哦,是的:如何转换int64
为number(20, 3)
?不知道,我不使用Python。
推荐阅读
- android - 多个signingConfigs + flavor + buildType
- java - 结合具有不同参数或不同参数编号的消费者
- python - 与多个元素的 Numpy 外部相等比较
- c# - 读取 excel 文件会引发 COMException
- sql - 不同的 JOIN 值取决于另一列的值
- javascript - 无法通过 addEventListener 将参数传递给函数
- javascript - 如何在使用它的同一组件中访问 mapStateToProps?
- python-3.x - Math.log 大数字的错误结果
- c# - Oracle VS2017 开发工具中的表适配器配置向导无法解析 || 或 (+)
- docker - Docker 在树莓派上以错误的架构运行映像