Python 将Dataframe导出到Oracle:TypeError

Python 将Dataframe导出到Oracle:TypeError,python,sql,oracle,pandas,cx-oracle,Python,Sql,Oracle,Pandas,Cx Oracle,我多次未能将以下数据帧导出到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 13

我多次未能将以下数据帧导出到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
它在
游标行失败。executemany(sql\u查询,导出的\u数据)
出错

类型错误:需要数字数据

我的相关代码:

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()
当我注释
导出的\u数据
行并取消注释它下面的行时,它仍然失败,但这次出现了错误

cx\u Oracle.DatabaseError:ORA-01036:非法变量名称/编号

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


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

您可能遗漏了一个逗号。 它看起来是---值(:3,:1,:2,:4,:5,:6,:7,:8‘可持续收获部门’,‘1’)

试试--

sql\u查询=(“插入到粗糙表中(物种、发布日期、股票id、英镑、货币、交易年、交易月、交易日、部门名称、ask)值(:3,:1,:2,:4,:5,:6,:7,:8,'可持续收获部门','1'))

Oracle sql---插入(列1、列2)值('字符值'、数字值')


Sql_query=(“插入(列1,列2)值('character_value',numeric_val);”)

您可能缺少逗号。 它看起来是---值(:3,:1,:2,:4,:5,:6,:7,:8‘可持续收获部门’,‘1’)

试试--

sql\u查询=(“插入到粗糙表中(物种、发布日期、股票id、英镑、货币、交易年、交易月、交易日、部门名称、ask)值(:3,:1,:2,:4,:5,:6,:7,:8,'可持续收获部门','1'))

Oracle sql---插入(列1、列2)值('字符值'、数字值')


Sql_query=(“插入(列1,列2)值('character_value',numeric_val);”)

看起来像是数字列中有非数值,不是吗?添加oracle表定义有助于确定问题所在

看起来像是在数字列中有非数字值,不是吗?添加oracle表定义有助于确定问题所在

我修复了这个问题,但仍然失败,出现了相同的错误:(您是否也删除了代码中“ask”和值之间的额外引号?即,不是[…扇区名称,ask]”值(:3,:1…),而是[…扇区名称,ask)值(:3,:1,…)我同意@WillJobs。从语法上讲,你的查询是无效的,那些双引号对位于
INSERT
value
之间。这些额外的引号过去从未弄糟过。我删除了它们,但仍然失败,虽然我修复了它们,但仍然失败,错误如下:(您是否也删除了代码中“ask”和值之间的额外引号?即,不是[…扇区名称,ask]”值(:3,:1…),而是[…扇区名称,ask)值(:3,:1,…)我同意@WillJobs。从语法上讲,你的查询是无效的,因为那些双引号对位于
INSERT
值之间。这些额外的引号过去从来没有把它弄糟过。我删除了它们,它仍然失败,尽管我的Oracle表中的所有列都设置为接收
VarChar2
,所以不是因为column正在查找一个数字,但收到一封信。我的Oracle表中的所有列都设置为receive
VarChar2
,因此该列不是在查找数字,而是在接收一封信。