Я хочу создать файл CSV / Excel из файла db / schema.rb. Я могу вывести имя таблицы и имена их атрибутов в файл, но я также хочу сбросить другую информацию, такую как индексы, ограничения для столбцов и т. Д.
Вот мой код
require 'write_xlsx'
Rails.application.eager_load!
# Create a new Excel workbook
workbook = WriteXLSX.new('schema.xlsx')
# Add a worksheet
worksheet = workbook.add_worksheet
# Add and define a format
format = workbook.add_format # Add a format
format.set_bold
format.set_color('red')
format.set_align('center')
# Write a formatted and unformatted string, row and column notation.
col = row = 0
worksheet.write(0, 0, 'Table Name')
worksheet.write(0, 1, 'Attributes')
worksheet.write(0, 2, 'Attribute Type')
worksheet.write(0, 3, 'Attribute constraints')
worksheet.write(0, 4, 'Comments')
ApplicationRecord.descendants.each_with_index do |model, _index|
row += 1
worksheet.write(row, 0, model.name)
worksheet.write(row, 1, '')
model.attribute_types.each_pair do |attribute, attribute_type|
row += 1
worksheet.write(row, 1, attribute)
worksheet.write(row, 2, attribute_type.type)
worksheet.write(row, 3, JSON.parse(attribute_type.to_json))
end
end
workbook.close
Я также попробовал это от администратора PG, но получил ожидаемый результат.
COPY (select * from information_schema.columns) TO '/home/sachin/ruby/profile_service/columns.csv' with delimiter ',' csv header;