我尝试使用以下函数在Groovy中创建基于SQL文件的列名列表:
def get_column_names() {
def create_sql = new File("../create.sql").text.replaceAll("n", '')
def result = (create_sql =~ /(.*?);/).findAll().first().replace('(', '').split(',')
return result.stream().map({ x -> x.split(' ')[0] }).toList()
}
下面是create.sql文件的一个示例:
CREATE TABLE test_table (
id varchar(5) PRIMARY KEY,
created BIGINT,
company TEXT,
income FLOAT,
percent FLOAT
);
但是在执行之后,我得到了以下错误:
java.util.NoSuchElementException: Cannot access first() element from an empty List
另外,当我尝试在groovy控制台中执行相同的命令时,在那里我使用SQL作为字符串,我得到了正确的列表:
def create_sql = """
CREATE TABLE test_table (
id varchar(5) PRIMARY KEY,
created BIGINT,
company TEXT,
income FLOAT,
percent FLOAT
);
"""
def create_sql1 = create_sql.replaceAll("n", '')
def result = (create_sql1 =~ /(.*?);/).findAll().first().replace('(', '').split(',')
def result1= result.stream().map({ x -> x.split(' ')[0] }).toList()
结果:[ID,创建,公司,收入,百分比]
你知道这个函数出了什么问题吗?或者如何以其他方式从文件中提取列的列表?
1条答案
按热度按时间i7uaboj41#
该文件可能是在Windows中创建的,其中换行符通常为
\r\n
。如果是这样的话,也许您也可以尝试匹配\r
: