Я написал программу, которая получает данные из сокета, форматирует данные в формат CSV, а затем выгружает данные в файл;'/tmp/test_csv.csv'.
Далее я выполняю следующее в mysql:
LOAD DATA INFILE '/tmp/test_csv.csv'
INTO TABLE flow_data
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
Этот оператор выводит следующую ошибку:
Can't get stat of '/tmp/test_csv.csv' (Errcode: 2 "No such file or directory")
FromНасколько я понимаю, mysql не имеет доступа к чтению из / tmp, что имеет смысл.
Решение, которое я ищу, состоит в том, чтобы предоставить mysql доступ для чтения из / tmp, сохраняя при этом свою неспособностьнапишите туда (последнее необязательно).
Мне нужно вывести файл csv в / tmp (или любой другой каталог в стиле RAMdisk) из-за его размера, поэтому выгрузка файла в каталог базы данных mysql не являетсяправильное решение.Количество данных, с которыми я работаю, может привести к тому, что мой жесткий диск будет сильно загружен (как файлом, так и mysql), если он не будет сохранен в памяти.
Единственное решение, которое я нашел /Попытка включает в себя изменение химической завивки с semanage.https://stackoverflow.com/a/3971632/1449160 Однако мне не повезло с этим.
Я также видел обходной путь, используя ключевое слово LOCAL.Тем не менее, я не уверен в последствиях этого решения для производительности и предпочел бы, чтобы mysql читал файл напрямую или хотя бы проверял, имеет ли он значение.
ОС: Fedora 30
mysql -V
mysql Ver 15.1 Distrib 10.3.12-MariaDB, for Linux (x86_64)
* РЕДАКТИРОВАТЬ Файл (/tmp/test_csv.csv) и сервер sql находятся на одном компьютере.Я знаю, что 'LOAD DATA LOCAl INFILE' также будет работать, но я пытаюсь заставить mysql читать файл напрямую