mysql - 将多个文件中的多条记录加载到mysql表中

标签 mysql ruby

我正在尝试将不同数据从不同文件加载到 MySQL 的多个列中。我不是一个大数据库的人,所以也许我的数据结构错误。 :)

我是这样设置的:

DATABASE: mydb
TABLE:    aixserver1
COLUMNS:  os, hostname, num_users, num_groups, pkg_epoch

shown from mysql:

+---------------+-----------+------+-----+-------------------+----------------+
| Field         | Type      | Null | Key | Default           | Extra          |
+---------------+-----------+------+-----+-------------------+----------------+
| id            | int(11)   | NO   | PRI | NULL              | auto_increment |
| cur_timestamp | timestamp | NO   |     | CURRENT_TIMESTAMP |                |
| pkg_epoch     | int(11)   | NO   |     | NULL              |                |
| os            | char(5)   | YES  |     | NULL              |                |
| hostname      | char(40)  | YES  |     | NULL              |                |
| num_users     | int(10)   | YES  |     | NULL              |                |
| num_groups    | int(10)   | YES  |     | NULL              |                |
+---------------+-----------+------+-----+-------------------+----------------+

所以基本上我想将 pkg_epoch、os、hostname、num_users 和 num_groups 填充到数据库中。我要加载的数据在服务器上的 5 个平面文件中。我正在使用 ruby​​ 加载数据。

我的问题是如何将这些文件中的所有这些值一次加载到我的表中。如果我一次插入一条记录,那么其他记录将变为 NULL。即,我仅将数据加载到主机名列中,所有其他列对该​​行都变为 NULL。

我错过了什么? :)

最佳答案

您可以通过几种方式做到这一点,但诀窍是使用变量占位符。如果您使用了数据库的 LOAD DATA 函数,这里是一个示例:

LOAD DATA INFILE '/PATH/TO/FILE' IGNORE INTO TABLE tableName FIELDS TERMINATED BY '\t' LINES  
TERMINATED BY '\r' (@skip, @skip, @skip, login_name, pwd, @skip, @skip, @skip, @skip, @skip, first_name, last_name);

你看,我只是为我不想包含在数据库中的字段设置了一个变量@skip 或@anything,并命名了我确实想要的列。


我可以帮助您完成一半,但如果您使用 Ruby 构建自己的加载程序,我不确定最佳方法。我建议您检索文件并让 MySQL 使用 LOAD DATA 导入,因为它的性能非常好,您可以使用上面的技巧。

关于mysql - 将多个文件中的多条记录加载到mysql表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640519/

相关文章:

MySQLWhere IN 同时还查找任何具有前面有任意数量的 0 的值的值

python - MongoDB 不是比 MySQL 快吗?

ruby-on-rails - 如何使用 Ruby on Rails 创建 zip 存档?

ruby-on-rails - Ruby on Rails Sidekiq worker 执行顺序

php - 为什么mysql的结果总是得到正值?

MySQL - 追溯添加 AUTO_INCREMENTs 的 ID

ruby - paypal v.zero 测试 nonce 失败,没有错误消息

ruby - ruby 中的错误解密错误

ruby - 为什么我在 ruby​​ 中使用 while 和 until 得不到相同的结果?

mysql - Kubernetes MySQL Pod卡在CrashLoopBackOff