gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:29:08 25 4
gpt4 key购买 nike

我正在尝试将不同数据从不同文件加载到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com