java程序在比较2个文件时找出错误列

java程序在比较2个文件时找出错误列,java,Java,我试着插入 INSERT INTO T1 (column1, column2, column3, column4) VALUES (value1, value2, value3); 上面的insert语句以脚本的形式作为txt文件存在 其中“column4”不是表中存在的列。 我已将xls文件中的表格列表与列一致 xls file T1 ---- column1 T1 ---- column2 T1 ---- column3 T2 ---- column1 T2 ---- column2 T

我试着插入

INSERT INTO T1 (column1, column2, column3, column4) VALUES (value1, value2, value3);
上面的insert语句以脚本的形式作为txt文件存在

其中“column4”不是表中存在的列。 我已将xls文件中的表格列表与列一致

xls file
T1 ---- column1
T1 ---- column2
T1 ---- column3

T2 ---- column1
T2 ---- column2
T2 ---- column3
T2 ---- column4
在比较包含脚本和xls文件列表的txt文件时,它必须将第4列作为一个额外的列

有人能帮我吗?
谢谢

您需要使用DatabaseMetaData:,它允许您列出表的字段。此处提供了一些代码:


但是验证一个查询到目前为止还不是一项简单的任务。您的查询可能会有其他问题,而不仅仅是列的命名,这取决于数据库的大小。从查询sintax判断,我猜您是在尝试从JAVA程序将数据插入Oracle数据库

您可以使用try-and-catch编写代码

try{

     String query = "INSERT INTO TABLE_NAME (column1, column2, column3, column4) VALUES (value1, value2, value3);"
     Statement stm = connection.createStatement();
     stm.execute(query);

}
catch(SQLException ex){

     System.out.println(ex.getErrorCode());
     System.out.println(ex.getErrorMessage());

}
我相信通过分析ex.getErrorMessage中的字符串,您将能够得出错误识别了哪一列的结论。 它将如下所示:ORA-00904:column4:无效标识符

通过使用子字符串函数和类似函数,您可以看到问题所在
有关SQL异常的更多信息:

标记DBMS,即MySQL、SQL Server等。。因为我们插入了大量数据,所以您使用的基本上是一个配置管理项目,其中有很多次列名是多余的。就为了这个,我想我可以找到一些东西,其中提到了列名,这是超出我想要警告的是,如果您在生产代码中使用它,这将是非常困难的处理所有情况。但是对于一个偶尔使用的助手来说,这可以完成工作。DatabaseMetaData有助于找出表中有多少字段和类型。在需要的地方使用它来验证您的查询,但不要在生产代码中传播它。我只是理解实际的逻辑。甚至在将产品按原样发送之前,就可以避免在脚本中添加额外的列来测试env。