gpt4 book ai didi

python - 数组函数返回空

转载 作者:行者123 更新时间:2023-11-29 12:35:55 26 4
gpt4 key购买 nike

这里的目的是适应this answer返回数组而不是 setof 数据类型。

CREATE FUNCTION split_csvline(
line text, -- the input CSV string
delim_char char(1) = ',', -- can be also E'\t', ';', '|', etc.
quote_char char(1) = '"' -- field quotation
) RETURNS text[] AS $f$
import csv
row = csv.reader(
[line],
quotechar=quote_char,
delimiter=delim_char,
skipinitialspace=True,
escapechar='\\'
)
next(row)
$f$ IMMUTABLE language PLpythonU;

SELECT split_csvline('a,b'); -- empty!

编辑

注意事项

这是一个关于“使用 Python 和 PostgreSQL”的问题。

我正在使用 PLpythonU,因为员工使用 Python,而且 CSV 很复杂,需要可靠(经过多年测试)算法。

不需要解决方法,因为正在使用一个简单的解决方法:

CREATE FUNCTION split_csv_line(
text, char(1) DEFAULT ',', char(1) DEFAULT '"'
) RETURNS text[] AS $f$
SELECT x FROM split_csv($1,$2,$3) x LIMIT 1;
$f$ language SQL IMMUTABLE;

最佳答案

csv.reader 函数返回一个reader 对象。 next 是一个reader 对象方法:

create or replace function split_csvline(
_line text,
_delim_char char(1) = ',',
_quote_char char(1) = '"'
) returns text[] as $f$
import csv
reader = csv.reader(
[_line],
quotechar = _quote_char,
delimiter = _delim_char,
skipinitialspace = True,
escapechar = '\\'
)
return reader.next()
$f$ immutable language plpythonu;

select split_csvline('a,b');
split_csvline
---------------
{a,b}

关于python - 数组函数返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42924980/

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