MST

星途 面试题库

面试题:Ruby数据迁移工具中如何处理CSV文件数据迁移

假设要使用Ruby开发一个数据迁移工具,将本地CSV文件中的数据迁移到数据库中。CSV文件包含'姓名'、'年龄'、'邮箱'三列。请简述实现思路,并给出关键代码片段。同时说明在处理CSV文件时,如何处理可能出现的编码问题。
22.7万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 读取CSV文件:使用Ruby的CSV库读取本地CSV文件内容。
  2. 连接数据库:根据目标数据库类型,选择合适的数据库连接库(如mysql2连接MySQL数据库),并建立数据库连接。
  3. 数据插入:遍历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

处理编码问题

  1. 检测编码:可以使用ruby-encoding库来检测CSV文件的编码。例如:
require 'encoding/guess'
file_encoding = Encoding.find(Encoding::Guess.find('your_file.csv'))
  1. 转码:读取CSV文件时,将文件内容转码为UTF - 8(一般数据库常用编码)。
require 'csv'
csv_data = CSV.read('your_file.csv', headers: true, encoding: file_encoding.to_s => 'UTF-8')

这样就可以在处理CSV文件时避免因编码问题导致的数据读取或插入错误。