gpt4 book ai didi

java - 解析sql数据库文件以在java中获取想要的列字段

转载 作者:行者123 更新时间:2023-11-29 05:32:28 25 4
gpt4 key购买 nike

我正在努力从我的 .sql 文件中获取一些列名和表名。

下面给出了文件,其中包含我的数据库数据。使用它,我必须获取列名和表名。

DROP TABLE ADRepHealthTest_TREND CASCADE CONSTRAINTS;CREATE TABLE ADRepHealthTest_TREND(TRGT_HOST       varchar2(32),PORT_NO         varchar2(32),SITE_NAME       varchar2(64),INFO            varchar2(128),MSMT_HOST       varchar2(32),MSMT_TIME       date,PERIOD          varchar2(32),FAILS_COUNT_MIN Number(20,4) NOT NULL,FAILS_COUNT_MAX Number(20,4) NOT NULL,FAILS_COUNT_STCNT varchar2(32) NOT NULL,TOTAL_COUNT_MIN Number(20,4) NOT NULL,TOTAL_COUNT_MAX Number(20,4) NOT NULL,TOTAL_COUNT_STCNT varchar2(32) NOT NULL,PERCENT_COUNT_MIN Number(20,4) NOT NULL,PERCENT_COUNT_MAX Number(20,4) NOT NULL,PERCENT_COUNT_STCNT varchar2(32) NOT NULL);

我使用 Scanner 类完美读取了文件。整个数据已被完美读取。

现在我只需要来自已解析数据的列名和表名。我费了很大力气来标记化或完美地获取列名和表名。

指导我继续前进!!!

最佳答案

请尝试使用以下代码:

public class Test {
public static void main(String[] args) {
StringBuffer tableBuffer = new StringBuffer();
StringBuffer columnBuffer = new StringBuffer();
try
{
Scanner scanner = new Scanner(new FileInputStream(new File("D:\\test.sql")));
while(scanner.hasNextLine()){
String token = scanner.nextLine().toUpperCase();
if(token.contains("TABLE")){
tableBuffer.append(token).append("\n");
}

if(isContainDataType(token)){
columnBuffer.append(token).append("\n");
}
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}

System.out.println("table:\n" + tableBuffer.toString());
System.out.println("column:\n" + columnBuffer.toString());
}

private static boolean isContainDataType(String token){
if(token.contains("VARCHAR")){
return true;
}else if(token.contains("NUMBER")){
return true;
}

return false;
}
}

关于java - 解析sql数据库文件以在java中获取想要的列字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com