к одной таблице и не рассматривается ситуация) обычно везде товары в одной таблице, характеристики товара (опции) в другой, картинки в третьей. И всегда есть связь по id. так что 2-3 запроса и у тебя всё собирается в выборку а дальше конвертишь куда хочешь. Но когда люди заказывают перенести с одного сайта на другой товар, они же предоставляют доступ, ведь для себя это делают. Это если с чуждого сайта надо спармить, тогда понятно дело будет никакого доступа.
Я, наверное, про скпертехнологии расскажу :)
У меня для выгрузок есть у контроллера товара метод getData() который выгружает все, что можно просто одним запросом с айди товара :)
100% инфы можно получить еще и релейшн дернув в том же twig.