我最初是在“超级用户”上提出这个问题的,但有人建议我在此处重新发布。
我正在使用最新版本的APEX(4.1.1)和Oracle(11.2.0.3)。
我正在将CSV数据上传到一组表。
我一直在尝试,并且遇到了一些以前从未见过的问题。
例如,我尝试将数据导入此表:
CREATE TABLE SW_ENGINEER
(ENGINEER_NO VARCHAR2(10),
ENGINEER_NAME VARCHAR2(50),
CONSTRAINT SW_ENG_PK PRIMARY KEY (ENGINEER_NO))
它在此简化的数据子集上失败:
call log no,contract_no,call date,agreed date,agreed time,actual arrive,engineer no,engineer name,equipment code,cust desc,eng desc
a,b,c,22-Mar-06,1,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,22-Mar-06,2,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,19-Mar-06,3,19/03/2006 09:15,351,Rory Juarez,d,e,f
(对于较大的数据集,它以相同的方式失败)
我无法通过APEX或SQL Developer加载它,如下所示:
APEX:使用APEX Data Workshop,导入文本,加载现有表格,使用逗号分隔,选择表格和文件,在“标题行”复选框中打勾,然后我们将获得显示正确数据的列映射表单。然后将除engineer_no和engineer_name以外的所有列均设置为“否”,然后单击“加载数据”。
这似乎可以正常工作,并在“文本数据加载存储库”中显示摘要行,但经检查已加载了0行,但有79行失败。单击79显示它们都遭受了“ ORA-01008:并非所有变量都绑定”。所选的列对我来说看起来不错,所以我想知道尽管设置为“否”,它是否仍包括其他一些列?
如果我在上载前编辑csv以删除不相关的列,则不会发生此问题,但是如果我可以使用列映射,则会容易得多。
SQL Developer:使用SD中的导入数据向导,我发现除非选中“标题行”(按钮已启用但不起作用-为什么不行?),否则它将不会进行列映射-但是,如果选中了(在这种情况下正确),则验证步骤将失败,因为“表列Engineer_no不够大...”。
我发现可以通过从csv文件列中删除标头值来解决。因此看来,设置“标题行”复选框实际上并没有导致它完全忽略标题行,而是标题值“ engineer-no”引起了错误。在我看来这不对。
过去,我使用这两种方法都没有问题,并且想知道最近的升级是否与此有关。
有任何想法吗 ?还是我缺少明显的东西?
最佳答案
我的一位同事发现了以下(并非完全令人满意的)解决方案:
如果您需要的列都在开头,那么它会像这样运行:
engineer no,engineer name,equipment code,cust desc,eng desc,call log no,contract_no,call date,agreed date,agreed time,actual arrive
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,1,23/03/2006 15:00
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,2,23/03/2006 15:00
351,Rory Juarez,d,e,f,a,b,c,19-Mar-06,3,19/03/2006 09:15
如此看来,APEX文本导入中具有“是/否”包含功能的错误?