Здесь решение, которое использует print.formula
, кажется хитрым, но оно делает работу в oneline и избегает использования deparse
, и нет необходимости использовать дополнительный пакет. Я просто фиксирую вывод формулы печати, используя capture.output
paste("my text",capture.output(print(formula(celkem ~ rok + mesic))))
[1] "my text celkem ~ rok + mesic"
В случае длинной формулы:
ff <- formula(paste("y ~ ", paste0("x", 1:12, collapse = " + ")))
paste("my text",paste(capture.output(print(ff)), collapse= ' '))
"my text y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12"
SHOW INDEX FROM <tablename>
Вам нужна строка, где Key_name = PRIMARY
http://dev.mysql.com/ doc / refman / 5.0 / ru / show-index.html
Вероятно, вы захотите кэшировать результаты - требуется некоторое время, чтобы выполнить инструкции SHOW для всех таблиц, с которыми вам, возможно, придется работать.
Возможно, это не рекомендуется, но работает нормально:
SHOW INDEX FROM <table_name> WHERE Key_name = 'PRIMARY';
Надежный способ - использовать information_schema:
SELECT k.COLUMN_NAME
FROM information_schema.table_constraints t
LEFT JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema=DATABASE()
AND t.table_name='owalog';
Как представлено на mysql -список . Однако это в несколько раз медленнее по сравнению с первым решением.