SSIS - Как импортировать несколько файлов JSON в папке в Oracle? - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь импортировать несколько файлов JSON в папке в базу данных Oracle, используя SSIS.Код ниже - это анализатор JSON, который может импортировать один файл.Мне нужно это, чтобы перебрать папку и импортировать все файлы.Вот код в компоненте сценария для импорта файла JSON.Есть идеи?Спасибо!

public override void CreateNewOutputRows()
{
    String jsonFileContent = File.ReadAllText(@"C:\Users\tngo\File\File1.json");

    JavaScriptSerializer js = new JavaScriptSerializer();

    List<IGData> igdatas = js.Deserialize<List<IGData>>(jsonFileContent);

    foreach (IGData igdata in igdatas)

    {

        Output0Buffer.AddRow();

        Output0Buffer.piececount = igdata.piececount;

        Output0Buffer.wgt = igdata.wgt;
    }
}

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Поскольку вы уже находитесь в C #, вы можете завершить его с помощью цикла foreach вокруг всего кода.

string[] files = System.IO.Directory.GetFiles("C:\\Users\\tngo\File\\", "*.json");

foreach(string file in files)
{
    String jsonFileContent = File.ReadAllText(file)
    JavaScriptSerializer js = new JavaScriptSerializer();

    List<IGData> igdatas = js.Deserialize<List<IGData>>(jsonFileContent);

    foreach (IGData igdata in igdatas)

    {

        Output0Buffer.AddRow();

        Output0Buffer.piececount = igdata.piececount;

        Output0Buffer.wgt = igdata.wgt;
    }

}
0 голосов
/ 24 сентября 2018

Вам нужно будет использовать Foreach Loop Task.

В редакторе циклов Forech выполните следующие действия:

Используйте тип Foreach File Enumerator и укажите для папки C:\Users\tngo\File\.Ваш подстановочный знак «Файлы» будет *.json, и вы должны проверить Fully qualified в Retrieve file name.После этого нажмите Variable Mapping в левой панели редактора и создайте новую строковую переменную, которая будет содержать полное имя файла.Для этого примера мы назовем наш ForEachLoop_StringVar.

После создания цикла перетащите Script Task в Foreach Loop, а затем дважды щелкните Script Task, чтобы открыть Script Task Editor.Добавьте строковую переменную, которую вы создали выше, как ReadOnlyVariables, а затем нажмите кнопку Edit Script..., чтобы открыть ваш скрипт.Затем вы можете изменить жестко закодированное имя файла со ссылкой на вашу переменную.Ваш код сценария будет выглядеть примерно так:

public override void CreateNewOutputRows()
{
    String jsonFileContent = File.ReadAllText((string)Dts.Variables["User::ForEachLoop_StringVar"].Value);

    JavaScriptSerializer js = new JavaScriptSerializer();

    List<IGData> igdatas = js.Deserialize<List<IGData>>(jsonFileContent);

    foreach (IGData igdata in igdatas)

    {

        Output0Buffer.AddRow();

        Output0Buffer.piececount = igdata.piececount;

        Output0Buffer.wgt = igdata.wgt;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...