Использование mysqlimport, где имя файла отличается от имени таблицы

#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