【问题标题】:Exporting Dataframe to Oracle: TypeError将数据框导出到 Oracle:TypeError
【发布时间】:2017-07-23 18:45:56
【问题描述】:

我多次无法将以下 Dataframe 导出到我的 Oracle 表:

final df is:    S USTAINABLE H ARVEST S ECTOR| QUOTA LISTING JUN 11 2013 Unnamed: 1  \
2                                              6/4/13           130196   
3                                             5/28/13           130158   
4                                              6/4/13           130210   
5                                             5/14/13           130079   
6                                              6/4/13           130187   
7                                              6/4/13           130208   
8                                             6/11/13           130249   
9                                              6/4/13           130204   
10                                            5/28/13           130148   
11                                            5/28/13           130149   
12                                            5/28/13           130157   
13                                            5/21/13           130105   
14                                            5/21/13           130106   
15                                             6/4/13           130205   
16                                            6/11/13           130250   
17                                             6/4/13           130206   
18                                            6/11/13           130248   
19                                       QUOTA TO BUY                0   
20                                               DATE         TRADE ID   
21                                            6/11/13           130239   
22                                            5/14/13           130074   
23                                            3/26/13           130006   
24                                            5/14/13           130075   
25                                             5/7/13           130023   
26                                            5/14/13           130039   
27                                                  1                0   

        Unnamed: 2     Unnamed: 3 Unnamed: 4  email_year  email_month  \
2          COD GBW          10000        0.6        2013            6   
3          COD GBW            300        0.6        2013            6   
4      HADDOCK GBE   UP TO 30,000     OFFERS        2013            6   
5           PLAICE           1000       0.45        2013            6   
6       WHITE HAKE   UP TO 25,000        0.5        2013            6   
7       WHITE HAKE           4000        0.5        2013            6   
8        WINTER GB           3300       0.25        2013            6   
9        WINTER GB          10000       0.48        2013            6   
10       WINTER GB   1U0P 0T,0O00       0.25        2013            6   
11       WINTER GB   UP TO 10,000        0.4        2013            6   
12       WINTER GB           1400       0.25        2013            6   
13       WINTER GB          10000        0.5        2013            6   
14       WINTER GB          10000        0.5        2013            6   
15      WINTER GOM           1000       0.38        2013            6   
16      WINTER SNE           6500        0.4        2013            6   
17      WINTER SNE           3000       0.63        2013            6   
18  YELLOWTAIL GOM           2000       1.25        2013            6   
19               0              0          0        2013            6   
20   DESIRED STOCK         AMOUNT  BUY PRICE        2013            6   
21         COD GOM   UP TO 14,000        2.1        2013            6   
22         COD GOM          20000    INQUIRE        2013            6   
23         COD GBE            ANY        1.5        2013            6   
24     HADDOCK GOM          10000    INQUIRE        2013            6   
25     HADDOCK GOM    UP TO 6,000       0.75        2013            6   
26      WHITE HAKE  UP TO 100,000        0.3        2013            6   
27               0              0          0        2013            6   

    email_day  
2          11  
3          11  
4          11  
5          11  
6          11  
7          11  
8          11  
9          11  
10         11  
11         11  
12         11  
13         11  
14         11  
15         11  
16         11  
17         11  
18         11  
19         11  
20         11  
21         11  
22         11  
23         11  
24         11  
25         11  
26         11  
27         11

它在cursor.executemany(sql_query, exported_data) 行失败并出现错误

TypeError: expecting numeric data

我的相关代码:

cursor = con.cursor()
exported_data = [tuple(x) for x in df.values]
#exported_data = [str(x) for x in df.values]

sql_query = ("INSERT INTO ROUGHTABLE(species, date_posted, stock_id, pounds, money, trade_year, trade_month, trade_day, sector_name, ask)" "VALUES(:3, :1, :2, :4, :5, :6, :7, :8 'Sustainable Harvest Sector', '1')")

cursor.executemany(sql_query, exported_data)
con.commit() #commit to database

cursor.close()
con.close()

当我注释exported_data 行并取消注释它下面的行时,它仍然失败,但这次出现错误

cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

对这些错误的研究表明,它们可能是由于绑定变量、无效的日期格式、尝试导出字符串与 dict 等造成的。我不是 SQL 专家,希望帮助解决这个问题。

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: python sql oracle pandas cx-oracle


    【解决方案1】:

    在看起来像数字的列中似乎有非数字值,不是吗?添加 oracle 表定义可以帮助确定问题出在哪里。

    【讨论】:

    • 我的 Oracle 表中的所有列都设置为接收VarChar2,因此该列不是在寻找数字而是在接收字母。
    【解决方案2】:

    您可能缺少逗号。 它看起来 --- VALUES(:3, :1, :2, :4, :5, :6, :7, :8 'Sustainable Harvest Sector', '1')")

    试试---

    sql_query = ("INSERT INTO ROUGHTABLE(species、date_posted、stock_id、pounds、money、trade_year、trade_month、trade_day、sector_name、ask) VALUES(:3, :1, :2, :4, :5, :6 , :7, :8, '可持续收获部门', '1')")

    Oracle sql--- 插入 (col_1,col_2) 值 ('character_value',numeric_val);

    Sql_query=("插入 (col_1,col_2) 值 ('character_value',numeric_val);")

    【讨论】:

    • 我修复了它,但它仍然失败并出现同样的错误:(
    • 您是否还删除了代码中“询问”和“值”之间的额外引号?即,而不是 [... 扇区名称,询问)” “VALUES(:3,:1 ...] 应该是 [... 扇区名称,询问)VALUES(:3,:1,...]跨度>
    • 我同意@WillJobs。从语法上讲,您的查询在 INSERTVALUES 之间的那些双引号对是无效的。
    • 那些额外的引号过去从来没有搞砸过。我删除了它们,但仍然失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2014-12-17
    • 2020-09-05
    • 2021-10-13
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多