#mysql #filenames #restriction #mysqlimport #tablename
#mysql #имена файлов #ограничение #mysqlimport #имя таблицы
Вопрос:
Я играл с mysqlimport и столкнулся с ограничением, согласно которому имя файла должно совпадать с именем таблицы. Есть ли какой-либо способ обойти это?
Я не могу переименовать файл, поскольку он используется другими процессами, и я не хочу копировать файл, поскольку их будет много, некоторые из них будут очень большими.
Я хочу использовать mysqlimport, а не ЗАГРУЖАТЬ INFILE.
РЕДАКТИРОВАТЬ: К сожалению, это должно выполняться в Windows, поэтому, боюсь, никаких трюков с символическими ссылками.
Комментарии:
1. Почему вы не хотите использовать
LOAD DATA INFILE
, когда это то же самое, что делает mysqlimport, и это позволяет вам указать другое имя таблицы для данного входного файла?2. Я использую Java / JDBC, и вызов LOAD INFILE, похоже, не приводит к какой-либо ошибке, когда в некоторых ситуациях возникает проблема с загрузкой файла. При запуске через Workbench отображаются предупреждения, но драйвер JDBC ничего не выдает в ответ.
3. mysqlimport должен позволять параметру устанавливать другое имя таблицы, это базовая функция…
Ответ №1:
Вы не сказали, на какой платформе вы находитесь. В unix вы можете создать символическую ссылку на файл:
ln -s filename.txt tablename.txt
Затем используйте это в команде mysqlimport.
Но mysqlimport — это просто интерфейс командной строки для загрузки файла, поэтому вы также можете сделать это в командной строке:
mysql -e "load data infile 'filename' into table TBL_NAME" dbname
Комментарии:
1. вы все еще можете использовать mysql в Windows с тем же синтаксисом .. символическая ссылка на файлы — немного странный способ сделать это.
Ответ №2:
mysqlimport использует имя файла для определения имени таблицы, в которую должны быть загружены данные. Программа делает это, удаляя любое расширение имени файла (последнюю точку и все, что следует за ней); результат затем используется в качестве имени таблицы. Например, mysqlimport обрабатывает файл с именем City.txt или City.dat в качестве входных данных для загрузки в таблицу с именем City.
Ответ №3:
Вы пробовали использовать alias
команду, предполагая, что вы находитесь в системе Linux?
Ответ №4:
Просто создайте символическую ссылку:
ln -s /tmp/real_file.txt /tmp/your_table_name.txt