Загрузить содержимое CSV в качестве новой максимальной позиции на складе в Exact Online

Я хочу загрузить содержимое файла CSV в виде новых значений в наборе данных Exact Online, используя, например, следующую инструкцию SQL:

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 заявление)?

1 ответ

На данный момент я смог решить ее с помощью регулярных выражений, а затем загрузить сгенерированный оператор 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

Тем не менее, это подвержено ошибкам, когда у меня есть одна цитата в коде статьи.

Другие вопросы по тегам