Как мне записать результаты запроса MySQL в текстовый файл внутри цикла? - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть большая база данных лиц (скажем, 1000 человек / 5,000 записей на человека).Я хотел бы написать пару полей для каждого отдельного человека (в этом примере, скажем, lat и long) в текстовый файл (желательно через запятую).

Алгоритм будет выглядеть следующим образом:

foo=select distinct (id) from <table-name>;
for each id in foo
{
smaller_result= select lat,long from <table-name> where id=$id;
write smaller_result to a text file with unique name (e.g. id.txt);
}

Я могу легко закодировать это в PHP (который я часто использую для взаимодействия с MySQL, если не могу выполнить SQL-запрос командной строки напрямую).Однако в этом случае мне нужно поделиться кодом с соавтором и заставить его запустить его (а он не имеет и не может установить php).Кроме того, база данных достаточно велика и не может быть легко загружена онлайн (что позволило бы мне выполнить запрос через Интернет).Так как еще мне этого добиться?

a) Может ли этот алгоритм быть записан как SQL-запрос, который может быть выполнен в командной строке?

b) Если нет, можно ли это записать вPython, чтобы мой соавтор просто запустил файл .py?

Мы оба на OSX (Lion) и можем получить доступ к mysql и python из нашей оболочки / терминала.

1 Ответ

0 голосов
/ 15 декабря 2011

Вы можете вывести результат любого запроса выбора с помощью SELECT ... INTO OUTFILE.Это сгенерирует текстовый файл с выводом (на сервере ).

Так что вам нужно создать один запрос SELECT, который генерирует файл ... Я думаю, что в вашем случае это можетлегко выполнить с подзапросом, если нет, вы можете создать хранимую процедуру с курсором, который зацикливает ваш набор результатов 'foo' и добавляет его во временную таблицу, а затем использует SELECT ... INTO OUTFILE с этой таблицей.*

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