2

我想使用例如以下 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语句运行它)?

4

1 回答 1

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

但是,当我在文章代码中有单引号时,很容易出错。

于 2017-07-20T14:55:54.030 回答