Как мне отсканировать значение в ничто и не обработать его? - PullRequest
0 голосов
/ 06 июля 2018

В Go я пытаюсь написать инструмент для работы со структурой таблиц MySQL, поэтому мне приходится использовать множество таких запросов, как этот

show keys from`table`where`Key_name`='Primary'

В MySQL я не могу обернуть эту команду командой select и выбрать нужные столбцы, поэтому, когда мне нужен только один столбец (в данном случае Column_name), как мне поступить со столбцами, которые мне не нужны не хочешь? Потому что этот запрос также возвращает все остальные столбцы; Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment, Index_comment.

В моем коде Go есть строки, которые выглядят следующим образом

err = keysData.Scan(columnName)

Было бы здорово, если бы я мог сделать что-то подобное, хотя

err = keysData.Scan(_, _, _, _, columnName)

Но это на самом деле не работает, получая cannot use _ as value

Нужно ли объявлять выбрасываемые значения для каждого из этих ненужных столбцов?

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Для вашего случая использования я также рекомендую избегать вашего подхода и использовать INFORMATION_SCHEMA, как предложил @ bill-karvin.

Но, чтобы строго ответить на ваш вопрос, вы можете использовать пустышку sql.Scanner, которая всегда получается, но ничего не делает:

type dummyScanner struct{}

func (dummyScanner) Scan(v interface{}) error {
    return nil
}

var skip dummyScanner

err = keysData.Scan(skip, skip, skip, skip, columnName, skip, skip, skip, skip, skip, skip, skip, skip)
0 голосов
/ 06 июля 2018

Я бы использовал INFORMATION_SCHEMA. Это более универсально, чем SHOW KEYS, потому что вы можете выбрать отдельные столбцы. Например:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME='mytable' AND INDEX_NAME='PRIMARY'
ORDER BY SEQ_IN_INDEX

См. https://dev.mysql.com/doc/refman/8.0/en/statistics-table.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...