Я загружаю много CSV-файлов в таблицу SQL Server, используя SSIS (Visual Studio 2017).
Я использую для каждого контейнера цикла. У меня есть две пользовательские переменные - FileName (строка) и RowCnt (int)
Я разработал таблицу аудита (dbo.FEfiles) для отслеживания каждого загруженного файла и количества записей в каждом файле.
Таблица аудита имеет два столбца:
1) FileName (varchar (20)
2) RowCount (int)
После настройки задачи «Поток данных» внутри контейнера «Для каждого цикла» у меня есть задача «Выполнение SQL», которая подключается к моей таблице аудита.
В этой задаче «Выполнение SQL» на вкладке «Выражение» в разделе «SQLStatementSource» у меня есть следующее выражение, чтобы получить только имя файла:
"INSERT INTO dbo.FEfiles (FileName) SELECT '" + @ [User :: Filename] + "'"
Это правильно анализирует, когда я вычисляю выражение, я получаю:
INSERT INTO dbo.FEfiles (FileName) ВЫБРАТЬ «filename.CSV»
Теперь, как мне добавить переменную для RowCnt с целочисленным типом данных?
Я пробовал много вариантов, таких как приведенный ниже:
"INSERT INTO dbo.FEfiles (FileName, RowCount) SELECT '" + @ [Пользователь :: Имя файла] + "', + (DT_WSTR, 12) @ [User :: RowCnt]"
Когда я вычисляю выражение, я получаю следующее:
INSERT INTO dbo.FEfiles (FileName, RowCount) ВЫБРАТЬ «filename.CSV», + (DT_WSTR, 12) @ [User :: RowCnt]
Мне нужно вместо этого получить это: INSERT INTO dbo.FEfiles (FileName, RowCount) SELECT 'filename.CSV', 0
Не могли бы вы помочь мне получить правильное выражение?
Я даже смотрел это видео, но не смог понять:
https://www.youtube.com/watch?v=Um7tDy9jZRs
![enter image description here](https://i.stack.imgur.com/rQQVx.png)