Oracle功能:按单独列将全部插入

时间:2018-07-08 19:29:21

标签: oracle select insert

我已经到了我一直在玩弄一些东西的地方之一,试图弄清楚为什么它不起作用,并想在这里问我。我目前正在调整批处理过程,该过程涉及创建用于登台的外部表A,然后将数据从该表转移到表B进行进一步处理。

批量处理中有一个步骤要加载所有数据,它就像这样:

INSERT INTO TABLE B SELECT * FROM TABLE A

在Oracle Developer中批量运行此语句并在其外部运行时,出现以下错误:

Run query ORA-00932: inconsistent datatypes: expected DATE got NUMBER

我逐行进行了调整,并确保数据类型正确。我还尽力检查了数据本身,据我所知,这似乎也很正常。为了找出哪个字段可能出现错误,我尝试一次将数据从表A加载到表B的一列...这样做没有收到使我有些震惊的错误。如果我使用下面的SQL并单独列出所有字段,则所有数据的加载都可以正常工作。有人可以解释为什么会这样吗?下面的功能是否执行内部Oracle的工作,而上一个内部工作没有?

    insert into TABLE B (
    COLUMN_ONE,
    COLUMN_TWO,
    COLUMN_THREE
    .
    .
    .)
    select
    COLUMN_ONE,
    COLUMN_TWO,
    COLUMN_THREE
    .
    .
    .
    from TABLE A;

1 个答案:

答案 0 :(得分:0)

好吧,如果您发布了表A和B的描述,我们可以自己看到它。现在,我们必须相信您在说什么,即一切都匹配(但是Oracle表示不同意),所以我不知道该说些什么。

另一方面,我了解到

dates = [df_filtered.release_date.min(),wm_director.release_date.min(),wd.loc[7283,'Year'],wd.loc[9125,'Year'],
     wd.loc[10127,'Year']]
texts = ['1st movie released','1st movie directed by woman','1st Best Director nomination','Best Director won',
     '2nd Best Director Nomination']

fig, ax = plt.subplots(figsize=(14,1))
ax.plot((dates[0],dates[-1]),(0,0),'k',alpha=0.3)

for i, (text,date) in enumerate(zip(texts,dates)):
    ax.scatter(date,0,marker='s', s=100,color='crimson')
    ax.text(date,0.01,text,rotation=45,va="bottom",fontsize=14)
    ax.set_xticklabels([i.year for i in dates])

ax.yaxis.set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.xaxis.set_ticks_position('bottom')
ax.grid('off')
ax.patch.set_facecolor('white')
ax.get_yaxis().set_ticklabels([])
plt.show()

处理事情的方式很差(除非这是快速又肮脏的测试)。我尝试始终命名我正在使用的所有列,无论该操作涉及多少列。正如您所注意到的那样,这似乎也很适合您,所以我建议您继续这样做。