簡體   English   中英

將多個 dataframe 列 int64 dtype 轉換為等效於 oracle 的 NUMBER(20,3) 數據類型

[英]convert multiple dataframe columns int64 dtype to equivalent of NUMBER(20,3) datatype of oracle

我正在嘗試在 oracle 數據庫表中插入 dataframe,但表中的某些列的數據類型為NUMBER(20,3)

我假設這是浮動的。

如何將我的數據類型為int64的列轉換為等效的NUMBER(20,3) ,因為它給出了無效的標識符錯誤

Oracle 中的number(20, 3)表示該列接受總共有 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM