所以,我有一个脚本,比如,program.rb,其中我想输出一个列表数组的table_print版本
['value1','value2','value3']
['value4','value4','value6']
所以在我输出的.txt文件中看起来像这样。
col1 | col2 | col3
-------------------------------------------------------------------------
value1 | value2 | value3
.
.
.
我已经安装了table_print,但这就是我所拥有的工作模型:
require 'table_print'
TABLEPRINT STUFF?
open('table_print_output.txt','a'){|g|
g.puts TABLEPRINT?
}
我想我还没有得到如何使用Ruby等效的MySQL创建表
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
并插入
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
我不想让一个临时/潜在的数据库无缘无故地坐着。这就像我需要一个数据库作为变量或其他东西;也就是说,我创造它,我填充它,我打印它,我销毁它。
答案 0 :(得分:1)
看起来您需要String#ljust
:
rows = [
['value1','value2','value3'],
['value4','value4','value6']
]
rows.each do |row|
puts "#{row[0].ljust(30)}|#{row[1].ljust(30)}|#{row[2].ljust(30)}"
end
答案 1 :(得分:1)
table_print
无法打印嵌套数组,如下所示:
arrays = [
['value1', 'value2', 'value3'],
['value4', 'value5', 'value6']
]
因为它会使输入变平。您必须将内部数组转换为另一个对象。
Hash
可行:
hashes = array.map { |values| %w(col1 col2 col3).zip(values).to_h }
#=> [
# {"col1"=>"value1", "col2"=>"value2", "col3"=>"value3"},
# {"col1"=>"value4", "col2"=>"value5", "col3"=>"value6"}
# ]
tp hashes
# COL1 | COL2 | COL3
# -------|--------|-------
# value1 | value2 | value3
# value4 | value5 | value6
Struct
也会起作用:
Row = Struct.new(:col1, :col2, :col3)
rows = arrays.map { |values| Row.new(*values) }
#=> [
# #<struct Row col1="value1", col2="value2", col3="value3">,
# #<struct Row col1="value4", col2="value5", col3="value6">
# ]
tp rows
# COL1 | COL2 | COL3
# -------|--------|-------
# value1 | value2 | value3
# value4 | value5 | value6