面试题答案
一键面试实现思路
- 读取CSV文件:使用Ruby的CSV库读取本地CSV文件内容。
- 连接数据库:根据目标数据库类型,选择合适的数据库连接库(如
mysql2
连接MySQL数据库),并建立数据库连接。 - 数据插入:遍历CSV文件的每一行数据,将数据插入到数据库对应的表中。
关键代码片段
require 'csv'
require 'mysql2'
# 读取CSV文件
csv_data = CSV.read('your_file.csv', headers: true)
# 连接数据库
client = Mysql2::Client.new(
username: 'your_username',
password: 'your_password',
database: 'your_database',
host: 'your_host'
)
# 插入数据
csv_data.each do |row|
name = row['姓名']
age = row['年龄']
email = row['邮箱']
client.query("INSERT INTO your_table (name, age, email) VALUES ('#{name}', #{age}, '#{email}')")
end
处理编码问题
- 检测编码:可以使用
ruby-encoding
库来检测CSV文件的编码。例如:
require 'encoding/guess'
file_encoding = Encoding.find(Encoding::Guess.find('your_file.csv'))
- 转码:读取CSV文件时,将文件内容转码为UTF - 8(一般数据库常用编码)。
require 'csv'
csv_data = CSV.read('your_file.csv', headers: true, encoding: file_encoding.to_s => 'UTF-8')
这样就可以在处理CSV文件时避免因编码问题导致的数据读取或插入错误。