Вопрос или проблема
Мне просто нужно написать короткую программу командной строки, чтобы выполнить SELECT
и конвертировать результат в формат CSV, поэтому я открыт для любых бесплатных решений IDE/компилятора для Windows 10.
Я попробовал MS Visual Studio и официальный коннектор MySQL, но в меню Инструменты/Подключиться к базе данных я вижу только опции для MS и Oracle, ничего для MySQL.
Так что, я полагаю, я ищу что-то другое?
[Обновление] Смотрите, ребята, я ценю, что вы пытаетесь помочь, но, пожалуйста, больше никаких ответов со хранимыми процедурами или подобным.
Я должен иметь возможность подключаться к базе данных MySQL и выполнять произвольные команды (плюс множество другой нефункциональности MySQL) из C++.
Также обратите внимание, что я не хочу управлять MySQL через функцию c shell()
, popen()
или подобные, как это делается из командной строки. Мне нужно использовать коннектор базы данных из C++.
Можем ли мы сосредоточиться на рекомендациях IDE, которая упростит это? Спасибо.
Я думаю, что Eclipse IDE имеет коннектор MySQL. Вот объяснение о том, как установить его в Eclipse.
Eclipse также поддерживает разработку программного обеспечения на C/C++ – с помощью Eclipse CDT (набор инструментов для разработки C/C++), и является одним из самых известных бесплатных программных IDE. Он не идеален – и определенно не так отполирован для использования C/C++, как для Java – но я использую его широко. Вы абсолютно можете использовать его для написания приложений командной строки, особенно тех, которые отправляют запросы к СУБД и записывают вывод в CSV.
Единственное неизвестное – может ли коннектор MySQL для Eclipse взаимодействовать или даже сосуществовать с CDT. Это вам нужно будет проверить самостоятельно, так как я не использую MySQL и его коннектор с Eclipse.
Хотя я добавлю, что даже без компонента коннектора у вас все равно не должно возникнуть проблем с написанием вашей программы, используя Eclipse в качестве IDE.
Как насчет встроенной хранимой процедуры:
http://blog.secaserver.com/2014/10/mysql-export-table-split-csv-stored-procedure/
Ссылки с вышеуказанного стека переполнения:
DECLARE
@StartDT DATE,
@TableName NVARCHAR(50),
@FileLocation VARCHAR(255);
SET @TableName = N'ViewAccountDetail';
SELECT @StartDT = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', MIN(dos)), '19000101')
FROM dbo.accn_demographics;
PRINT @StartDT;
-- ^^^^^ отладка 101 - с какого месяца мы, по вашему мнению, начинаем?
WHILE @StartDT < '20110901'
BEGIN
SET @FileLocation = 'C:\test\' + @TableName
+ CONVERT(CHAR(10), @StartDT, 120) + '.csv';
PRINT @FileLocation;
--^^^^^ опять же, отладка 101 - как сейчас выглядит имя файла?
--EXEC BCP_Text_File @TableName, @FileLocation
SET @StartDT = DATEADD(MONTH, 1, @StartDT);
END
Без компиляции, без IDE, и теперь без внешних файлов по запросу пользователя.
SELECT
orderNumber, status, orderDate, requiredDate, comments
FROM
orders
WHERE
status="Cancelled"
INTO OUTFILE 'C:/tmp/cancelled_orders.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
Готово, нет IDE, нет компиляции.
Сохраните командную строку выше в blah.txt
Два p вместе намеренно, чтобы вы могли ввести пароль из командной строки также.
mysql -u root -ppassword databaseName <blah.txt
Это показывает пример:
https://stackoverflow.com/questions/3453168/c-program-mysql-connection
Ответ или решение
Для разработки командного приложения на C/C++, которое будет выполнять запросы к базе данных MySQL и конвертировать результаты в CSV формат, есть несколько отличных бесплатных IDE и компиляторов, которые помогут вам в этом процессе. Ниже вы найдете подробное руководство, которое уникально освещает вашу задачу и предлагает действительно полезные инструменты.
Рекомендуемые IDE и компиляторы
-
Code::Blocks
- Описание: Это бесплатная кросс-платформенная IDE для C/C++. Она поддерживает различные компиляторы, включая MinGW, что делает ее удобной для разработки под Windows.
- Поддержка MySQL: Для работы с MySQL вам нужно будет использовать библиотеки MySQL Connector/C. Установив библиотеку, вы сможете подключать C/C++ код к вашей базе данных.
-
Dev-C++
- Описание: Легкая и быстрая IDE для Windows, которая также поддерживает MinGW как компилятор. Она достаточно проста в освоении и позволяет быстро собирать проекты.
- Поддержка MySQL: Как и в случае с Code::Blocks, потребуется установка MySQL Connector/C. После этого вы сможете выполнять необходимые команды из вашей программы.
-
CLion (бесплатный период)
- Описание: Хотя CLion не бесплатен, он предлагает короткий пробный период. Это мощная IDE от JetBrains, поддерживающая C/C++. Она имеет множество встроенных возможностей для управления проектами.
- Поддержка MySQL: CLion может использовать внешние библиотеки, такие как MySQL Connector/C, что обеспечит вам все необходимые инструментальные средства для создания доступа к MySQL.
Установка MySQL Connector/C
- Скачивание: Вам нужно скачать MySQL Connector/C с официального сайта MySQL.
- Установка: Установите его, следуя инструкциям установщика. Убедитесь, что вы добавили путь к библиотекам в переменные среды, чтобы IDE могла их распознавать.
- Создание проекта: В выбранной вами IDE создайте новый проект и подключите заголовочные файлы и библиотеки MySQL в настройках проекта.
Пример кода для выполнения запроса к MySQL и конвертации результатов в CSV
Пример ниже демонстрирует, как можно подключиться к базе данных MySQL, выполнить запрос и сохранить результаты в CSV-файл:
#include <iostream>
#include <fstream>
#include <mysql/mysql.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
// Подключение к базе данных
if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
std::cerr << "mysql_real_connect() failed\n";
mysql_close(conn);
return EXIT_FAILURE;
}
// Выполнение запроса
if (mysql_query(conn, "SELECT orderNumber, status, orderDate FROM orders WHERE status='Cancelled'")) {
std::cerr << "SELECT failed. Error: " << mysql_error(conn) << "\n";
mysql_close(conn);
return EXIT_FAILURE;
}
res = mysql_store_result(conn);
if (res == NULL) {
std::cerr << "mysql_store_result() failed. Error: " << mysql_error(conn) << "\n";
mysql_close(conn);
return EXIT_FAILURE;
}
// Создание файла CSV
std::ofstream csvFile("output.csv");
if (csvFile.is_open()) {
while ((row = mysql_fetch_row(res))) {
csvFile << row[0] << "," << row[1] << "," << row[2] << "\n";
}
csvFile.close();
} else {
std::cerr << "Could not open the file.\n";
}
mysql_free_result(res);
mysql_close(conn);
return EXIT_SUCCESS;
}
Заключение
С использованием правильной IDE и MySQL Connector/C, вы сможете успешно разработать командное приложение, которое выполняет SQL запросы и сохраняет результаты в CSV формат. Рекомендуемые IDE, такие как Code::Blocks и Dev-C++, обеспечивают все необходимые инструменты, чтобы сделать процесс разработки простым и эффективным. Настройка подключения к базе данных и выполнение запросов обеспечит полный контроль над вашей системой и данными.
Не забудьте установить соответствующие библиотеки и следить за совместимостью версий. Удачи в разработке вашего приложения!