21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/e621/csv_importable.rb', line 21
def import_from_csv(csv_path)
model = T.unsafe(self)
= File.open(csv_path, "rb", &:readline).chomp.split(",").map(&:strip)
columns = .map { |h| model.connection.quote_column_name(h) }.join(", ")
count = 0
raw = model.connection.raw_connection
raw.copy_data("COPY #{model.quoted_table_name} (#{columns}) FROM STDIN WITH (FORMAT CSV)") do
CSV.foreach(csv_path, headers: true) do |row|
raw.put_copy_data(CSV.generate_line(T.cast(row, CSV::Row).fields))
count += 1
end
end
self.row_count = count
count
end
|