我想使用例如以下SQL语句将CSV文件的内容作为新值上传到Exact Online数据集中:
update exactonlinerest..ItemWarehouses
set maximumstock=0
where id='06071a98-7c74-4c26-9dbe-1d422f533246'
and maximumstock != 0
我可以使用以下方法检索文件的内容:
select *
from files('C:\path\SQLScripts', '*.csv', true)@os fle
join read_file_text(fle.file_path)@os
但似乎无法更改file_contents
字段中的多行文字以分隔行或记录。
如何将file_contents
的字段拆分为多行(例如使用'update ...' || VALUE
,然后通过@@mydump.sql
或直接使用insert into / update
语句运行?)< / p>
答案 0 :(得分:2)
现在我已经能够使用正则表达式解决它,然后将生成的SQL语句加载到SQL引擎中,如下所示:
select regexp_replace(rft.file_contents, '^([^,]*),([^,]*)(|,.*)$', 'update exactonlinerest..ItemWarehouses set maximumstock = $1 where code = $2 and maximumstock != $1;' || chr(13), 1, 0, 'm') stmts
, 'dump2.sql' filename
from files('C:\path\SQLScripts', '*.csv', true)@os fle
join read_file_text(fle.file_path)@os rft
local export documents in stmts to "c:\path\sqlscripts" filename column filename
@c:\hantex\path\dump2.sql
但是,当我在文章代码中有一个引号时,它很容易出错。