как сделать отступ для результатов mysql SELECT INTO OUTFILE - PullRequest
1 голос
/ 12 июня 2011

У меня есть таблица sql, которую я хочу записать в выходной файл. Дело в том, что некоторые результаты представляют собой 1 цифру, т. Е. 1 или 2, в то время как другие представляют собой длинные числа, т.е.

Это приводит к тому, что выходной файл выглядит ужасно, как-то так

1   a bbb
1.21321342 aaaa bbbbb 

означает, что начало каждого столбца не выровнено. Кто-нибудь знает, есть ли способ в sql позаботиться об этом?

Спасибо !!!

Ответы [ 3 ]

1 голос
/ 12 июня 2011

приведите столбцы как char (n), например,

select cast(my_numeric_column as char(10)) as my_numeric_column

Это будет вывод данных столбца фиксированной ширины. Однако они будут оставлены в оправдании.

Лучшим решением было бы дать одинаковое количество знаков после запятой для всех чисел, 1 будет выводиться как «1.000000» и т. Д. Вот как это сделать:

select cast(my_numeric_column as decimal(16,8)) as my_numeric_column

Выберите необходимую вам точность (количество мест - здесь 8).

Все столбцы могут обрабатываться таким образом, чтобы получить красиво табулированный формат.

1 голос
/ 12 июня 2011

используйте вот так, вы получите CSV-файл, так что в Excel он выглядит довольно

SELECT * 
FROM mytable
INTO OUTFILE '/tmp/table.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
0 голосов
/ 12 июня 2011

Вы можете использовать одну из функций для работы со строками в mysql . В частности, LPAD или FORMAT .

...