• Как заставить питон преобразовать значения столбца к формату?

    Vindicar
    @Vindicar
    RTFM!
    Ну т.е. у тебя два формата, по сути. Первый A-B/C/DE, где A - одна цифра, B - 4 цифры, C - 2 или 3 цифры, D - от 0 до 2 цифр, E - 2 цифры. Тебе нужно извлечь две части: A-B/C и E, и использовать их как ключ. В виде регулярки это будет что-то типа (\d-\d{4}/\d{2,3}/)\d{0,2}(\d{2}). Пример:
    import re
    r = re.compile(r'(\d-\d{4}/\d{2,3}/)\d{0,2}(\d{2})')
    m = r.match("1-2345/678/0099")
    print(m.groups())  # выведет ('1-2345/678/', '99')

    Для второго формата всё ещё проще, там будет 9 цифр подряд: (\d{9})
    import re
    r = re.compile(r'(\d{9})')
    m = r.match("123456789")
    print(m.groups())  # выведет ('123456789', )

    Как применить это к своим данным, разбирайся - я не знаю, как они представлены.
    И да, код от чатгпт лучше не брать. Он обычно не работает, и его проще переписать, чем поправить.
    Ответ написан
    2 комментария
  • Как создать миграцию для всех файлов .dbf в выбранной папке?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    private void Select(object sender, RoutedEventArgs e)
            {
                var ff = new FolderBrowserDialog();
                if (ff.ShowDialog() == DialogResult.OK)
                {
                    
                    foreach (var file in Directory.EnumerateFiles(ff.SelectedPath, "*.dbf"))
                    {
                        var sqlFileName = file.Remove(file.IndexOf('.')) + "_asd_34.sql";
                        // тут вызываете конвертор
                        DbfToSql(file, sqlFileName);
                    }
                }
            }


    switch (type)
                {
                    case "Double":
                        return Type_.int_; // если пришел Double отправляем int
                    case "String":
     // но как узнать длину строк? Возможно нужно пробежаться по всем данным и вычислить максимальную?
                        return "VARCHAR2(42)"; // если пришел String отправляем varchar(255)
                    case "DateTime":
                        return Type_.Datetime_; // если пришел DateTime, отправляем datetime
                }
    Ответ написан
    Комментировать