loadData = "ЗАГРУЗИТЬ ДАННЫЕ '% s' INTO TABLE% s"% finalpath% tblname TypeError: недостаточно аргументов для строки формата - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть 2 переменные finalpath и tblname.Переменная finalpath содержит имена текстовых файлов, из которых мы загружаем данные, а tblname содержит имена таблиц, в которые мы загружаем данные из finalpath.Я использую Python Connector для запуска моих запросов SQL.

Когда я пытаюсь загрузить данные из одного файла, используя следующую строку кода

loadData= "LOAD  DATA INFILE '/mnt/Wdrive/pc70/SK/E07/CM_lad_19Dez2018_14Uhr38.txt' into TABLE CM_lad_19Dez2018_14Uhr38"

Он успешно считывает текстовый файл иззаданный путь и загружает соответствующие данные в таблицу CM_lad_19Dez2018_14Uhr38 Это верно для случая 1 файла.Теперь проблема в том, что у меня есть 100 из 1000 файлов по пути /mnt/Wdrive/pc70/SK/E07/.Я хочу создать таблицы, которые соответствуют именам файлов, а затем загрузить данные в соответствующие таблицы.Я успешно создал таблицы, используя следующий код:

    rootDir = '/mnt/Wdrive/pc70/SK/E07'
for dirName, subdirList, fileList in os.walk(rootDir):
        for fname in fileList:
                tblname = os.path.basename(fname).split('.')[0]
                print(tblname)
                sql= 'CREATE TABLE %s (Datum varchar(12), Uhrzeit varchar(13), UpsACT_V varchar(6), UpsPRE_V varchar(6), IpsACT_A varchar(6),IpsPRE_A varchar(6), PpsACT_W varchar(6), PpsPRE_W varchar(10))' %tblname
                myCursor.execute(sql)
                myConnection.commit()

На основе запроса CREATE TABLE я создал запрос для LOAD DATA, который выглядит следующим образом:

loadData= "LOAD DATA ' %s ' INTO TABLE %s " %finalpath %tblname

Myкод завершается со следующей ошибкой

Traceback (most recent call last):
File "25createtable.py", line 41, in <module>
loadData= "LOAD DATA ' %s ' INTO TABLE %s " %finalpath %tblname
TypeError: not enough arguments for format string

Я пробовал много других комбинаций для LOAD DATA, но безуспешно

loadData= "LOAD DATA LOCAL INFILE '%s[..]' INTO TABLE %s [..]" %finalpath % tblname
loadData= "LOAD DATA LOCAL INFILE [..] INTO TABLE %s [..]" % tblname

Есть ли какое-либо возможное решение для этого?Ждем отзывов

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