1

Как и опция --disable-column-names, есть ли у нас возможность получить результат запроса sql в текстовом файле без дополнительных символов или символов?

например

mysql -u username -ppassword  --disable-column-names --execute "select rules from test">out.txt

я использовал выше, чтобы получить результат. но в моей тестовой таблице содержатся следующие правила

    ---------------------------------------------------------------------
    rules
    ---------------------------------------------------------------------
    select no from tabl1
    select name from tabl2 innerjoin select name from tabl3
    select id from tabl6
    select card from tabl3
    --------------------------------------------------------------------

вот скрипт, который я использовал, который уже упоминался выше

mysql -u username -ppassword  --disable-column-names --execute "select rules from test">out.txt

когда я использовал вышеупомянутый запрос, я получаю результат как

    select no/n from tabl1
    select name/n from tabl2/n innerjoin/n select name/n from tabl3
    select id/n from tabl6
    select card/n from tabl3

это какой-то способ избежать этой проблемы ... я не хочу, чтобы в моем текстовом файле была специальная символьная строка, например '/n'?

1 ответ1

2

Экспорт результатов MySQL Query в файл с помощью командной строки

Я выполнил это, и у меня не было символов /n поэтому я не уверен, что с этим. Возможно, фактические результаты запроса, которые возвращаются, являются текстовым содержимым операторов выбора, и эти символы /n являются частью этого содержимого. Я упоминаю об этом, потому что вы говорите, что ваши результаты являются утверждениями select с этими символами.

Другое решение, которое вы можете использовать, это SELECT INTO OUTFILE с синтаксисом, например. , ,

  • select no INTO OUTFILE 'C:/Folder/Path/out.txt' from tabl1

    1. С этим вы могли бы выполнить эту логику в командной строке mysql следующим образом:

      mysql -u username -ppassword --execute "select no INTO OUTFILE 'C:/Folder/Path/out.txt' from tabl1"
      
    2. В противном случае вы можете поместить логику в хранимую процедуру и принять полный путь к файлу в качестве первого параметра, переданного ему во время выполнения, и выполнить его из командной строки mysql таким образом.

      mysql -u username -ppassword --execute "CALL StoredProcName('C:/Folder/Path/out.txt')"
      

Примечание: Для полного пути к папке, который вы указываете, какой MySQL будет использовать, обязательно используйте либо одну косую черту (/), либо вы удвоите обратную косую черту (\\), которая разделяет папки и файл, потому что одиночная обратная косая черта (\) escape-символ MySQL.


Дополнительные ресурсы

  • ВЫБРАТЬ В OUTFILE

    Описание

    SELECT ... INTO OUTFILE записывает результирующие строки в файл и позволяет использовать разделители столбцов и строк для указания конкретного выходного формата. По умолчанию поля заканчиваются символами табуляции (\t), а строки - символом новой строки (\n).

    Файл не должен существовать. Это не может быть перезаписано. Пользователю нужна привилегия FILE для запуска этого оператора. Также MariaDB требуется разрешение на запись файлов в указанное место. Если для системной переменной secure_file_priv задано непустое имя каталога, файл может быть записан только в этот каталог.

    Предложение CHARACTER SET определяет набор символов, в котором должны быть записаны результаты. Без этого условия преобразование не выполняется (двоичный набор символов). В этом случае, если имеется несколько наборов символов, выходные данные также будут содержать их, и их будет сложно перегрузить.

    Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .