2017-03-03 66 views
1

我一再失败以下数据框导出到我的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   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 

它失败与错误

TypeError: expecting numeric datacursor.executemany(sql_query, exported_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

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

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

回答

0

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

Try-- - :

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 --- INSERT INTO(COL_1,COL_2)值( 'character_value',numeric_val);

Sql_query =(“insert into(col_1,col_2)values('character_value',numeric_val);”)

+0

我修正了这个问题,但仍然失败,出现同样的错误:( – theprowler

+0

您是否还删除了'ask'和VALUES之间的代码中的额外引号?ie,而不是[... sector_name,ask]“” VALUES(:3,:1 ...]应该是[... sector_name,ask] VALUES(:3,:1,...] –

+0

我同意@WillJobs。从句法上来说, INSERT'和'VALUES'之间的中间引号对 – Parfait

0

看起来像数字列中有非数字值,不是吗?添加oracle表定义可以帮助解决问题。

+0

我的Oracle表中的所有列设置为接收'VarChar2'并不是该专栏正在寻找一个号码,而是收到一封信。 – theprowler