上传CSV的内容作为Exact Online中的新最大库存位置

时间:2017-07-20 14:38:53

标签: csv exact-online invantive-sql invantive-data-hub

我想使用例如以下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>

1 个答案:

答案 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

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