Импорт данных в формате файлов txt, csv через таблицу

Вы можете настроить в компоненте Таблица массовое занесение данных в таблицу через файлы CSV и TXT. 

Файл содержит некоторые данные построчно с некоторым разделителем колонок (в примере - это точка с запятой). 

Для одной таблицы может быть размещено несколько вариантов импорта (отдельные кнопки со своими настройками импорта).

Как настроить импорт в компоненте Таблица: 

1. Прописываем в GetItems SELECT 3 параметр importOptions в формате JSON:

-- SELECT 3
select '[
{"enable": true,  
         "code": "importKeys",
    	"desc": "Загрузите данные в txt или csv формате с разделителем в виде точки с запятой", 
		"resourceManager": "importTable1" , 
        "btnText": "Импортировать данные в таблицу", 
		"icon": "fa fa-bars", 
        "dialogTitle": "Массовая загрузка данных через таблицу", "dialogBtnText": "Выполнить импорт"  }

]' importOptions
	

Параметры JSON - массив объектов со следующими полями: 

  • enable - если true, то показывается кнопка Импортировать рядом с названием таблицы
  • code - задает ключ импорта. Этот код используется в процедуре updateFiled (с приставкой import-)
  • desc - ваше описание-инструкция для пользователя в диалоговом окне (например, здесь вы можете дать ссылку на шаблон файла). 
  • resourceManager - код менеджера ресурсов (создается в /resourceTypes), через который будет загружаться файл. 
  • btnText, icon - текст и иконка кнопка Импортировать
  • dialogTitle, dialogBtnText - заголовок и кнопка действия в модальном окне загрузки файла. 
  • hideSuccessRows - если true, то в выводе результата не будут показываться успешно обработанные строки. 

2. Создаем менеджер ресурсов, указанный в resourceCode

К примеру можно выставить такие параметры: 

3. Реализуем процедуру updateField, у которой на вход приходят следующие параметры: 

  • field = import (спецзначение, по которому мы определяем что вызван импорт через файлы). 
  • itemID - это data-itemID у таблицы (а не id строки как при обычном редактировании). 
  • value - это строка файла с разделителями. 

Процедура возвращает Result, Message - т.е. результат операции загрузки данной строки.

Таким образом делается загрузка файла, содержимое разбирается на строки (через \n) и для каждой строки запускается процедура updateField.

Вид процедуры: 

CREATE PROCEDURE [dbo].[crud_testx1213312_updateField]
	@itemID nvarchar(128),
	@field nvarchar(64),
	@value nvarchar(max),
	@username nvarchar(64)
AS
BEGIN

if(@field = 'import-importKeys') begin
	-- itemID - это itemID таблицы
    -- value это rows разделенный delimiter 
    declare @row nvarchar(max) = @value
    declare @v1 nvarchar(max) = isnull((select value from dbo.split(@row, ';') where [num] = 1), '')
    declare @v2 nvarchar(max) = isnull((select value from dbo.split(@row, ';') where [num] = 2), '')
    declare @v3 nvarchar(max) = isnull((select value from dbo.split(@row, ';') where [num] = 3), '')
    declare @v4 nvarchar(max) = isnull((select value from dbo.split(@row, ';') where [num] = 4), '')
    
    print @row
    print @v1
    print @v2
    print @v3
    print @v4
    select 0 Result, '11' Msg
    
    
end else if(@field = 'YYY') begin 
	update as_trace set code = @value where id = @itemID	
end else begin 
	select 'Невалидный код свойства' Msg, 0 Result
	return 
end  
select '' Msg, 1 Result	

END

--ru 29.04.2022 9:41:14
--ru 29.04.2022 9:44:44
--ru 29.04.2022 10:48:07

В итоге выполнения процедуры получаем окно вида, где зеленым выделено что загрузилось корректно (result=1 в updateField), а где были ошибки (result=0 в updateField).

Указывается исходная строка и ее результат (msg).

Примечание: Строки  Всего, Не прошла загрузка, Корректно загружено можно менять через as.resources - ключи crud.importTotal, crud.importFail, crud.importCorrect.

Таким образом для продвинутых пользователей, которые в состоянии подготовить файл с корректными данными можно сделать удобный механизм массового занесения данных. 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK