ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ «/mnt/sample.txt», если он пуст? - PullRequest
0 голосов
/ 29 апреля 2019

Уже 2 недели я пытаюсь загрузить данные из текстового файла в таблицу SQL с помощью соединителя gpython.Я могу успешно загрузить данные без каких-либо условий, таких как:

loadData35= "LOAD DATA LOCAL INFILE  '%s' "  %completePath35 + "INTO TABLE %s" %tblname35

Но теперь я хочу загружать данные, только если таблица пуста.

Я пытался использовать операторы if else, ноне удалось из-за ограничений запросов SQL.Ниже приведен мой основной код, и я хочу применить условие if к оператору загрузки, которое будет выполнено, только если таблица пуста (ранее не загружалась).

sql35= 'CREATE TABLE if not exists %s (Datum varchar(50), Uhrzeit varchar(13), UpsACT_V varchar(6), UpsPRE_V varchar(6), IpsACT_A varchar(6), IpsPRE_A varchar(6))' %(tblname35)

myCursor.execute(sql35)
myConnection.commit()

loadData35= "LOAD DATA LOCAL INFILE  '%s' "  %completePath35 + "INTO TABLE %s" %tblname35
myCursor.execute(loadData35)
myConnection.commit()

Я думал, можем ли мы выполнить эту условную загрузку SQL с помощью соединителя Python?

1 Ответ

0 голосов
/ 29 апреля 2019

MySQL, MariaDB и коннекторы в настоящее время плохо работают для условных операций, как вы упомянули.

Ваш лучший подход заключается в следующем: запросить таблицу на предмет содержимого в одном запросе, а затем выполнить загрузку в следующем.запрос.Лучший запрос для поиска, если таблица существует и пуста:

   SELECT EXISTS (SELECT 1 FROM table);

Это ищет любую строку в таблице.Возвращает ноль, если пуст, и один, если нет.Как только вы узнаете, присутствует ли таблица и пуста, вы можете загрузить ее.

...