Импорт данных в формате файлов 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

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы

Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK