Mysql:尽管文件内容包含数据,但最终字段中为空字段

时间:2018-08-20 20:59:23

标签: mysql sql

我有一个要插入到DB中的数据文件。如您所见,在文件的两行中,最后一个字段的值均为4。

2018-08-03 07:04:20     2       NODE_HEALTH_CHECK       Report_administrator_03082018065538     1       2018-08-03 07:04:17     2018-08-03 07:04:20     00:00:00:2:7210COMPLETED       FAILED  0       PRE_INSTALL     4
2018-08-03 12:33:30     2       NODE_HEALTH_CHECK       Report_administrator_03082018110136     2       2018-08-03 12:17:57     2018-08-03 12:33:30     00:00:15:33:116100     COMPLETED       SUCCESS 2       PRE_INSTALL     4

我通过命令将其插入到表中

LOAD DATA INFILE '$bcpFileNhcDetailsLogs' INTO TABLE details_logs

之后的表内容都为NULL。

time    siteid  jobType job_name        number_of_network_elements      start_time      end_time        duration        progress_percentage     status  result  health_status  healthy_nodes_count     category        netypeid1
2018-08-03 07:04:20     2       NODE_HEALTH_CHECK       Report_administrator_03082018065538     1       2018-08-03 07:04:17     2018-08-03 07:04:20     00:00:00:2:7210COMPLETED       FAILED  0       0       4       NULL
2018-08-03 12:33:30     2       NODE_HEALTH_CHECK       Report_administrator_03082018110136     2       2018-08-03 12:17:57     2018-08-03 12:33:30     00:00:15:33:116100     COMPLETED       SUCCESS 2       0       4       NULL

我不明白为什么。请参阅表说明,特别是最终字段netypeid。

Field   Type    Null    Key     Default Extra
time    datetime        NO      MUL     NULL
siteid  smallint(5) unsigned    NO              NULL
jobType varchar(32)     NO              NULL
job_name        varchar(100)    NO              NULL
number_of_network_elements      smallint(5) unsigned    NO              NULL
start_time      datetime        NO              NULL
end_time        datetime        NO              NULL
duration        varchar(100)    NO              NULL
progress_percentage     smallint(5) unsigned    NO              NULL
status  varchar(20)     NO              NULL
result  varchar(20)     NO              NULL
health_status   varchar(20)     YES             NULL
healthy_nodes_count     smallint(5) unsigned    YES             NULL
category        varchar(32)     YES             NULL
netypeid        smallint(5) unsigned    YES             NULL

2 个答案:

答案 0 :(得分:1)

您似乎没有像在数据表定义中那样在输入数据中具有匹配的列集。

它们在第一行中的排列方式:

time = 2018-08-03 07:04:20
siteid = 2
jobType = NODE_HEALTH_CHECK       
job_name = Report_administrator_03082018065538
number_of_network_elements = 1 
start_time = 2018-08-03 07:04:17 
end_time = 2018-08-03 07:04:20 
duration = 00:00:00:2:721 
progress_percentage = 0 
status = COMPLETED 
result = FAILED 
health_status = 0 
healthy_nodes_count = PRE_INSTALL    ### Missing value from imported data - displays as '0'
category = 4 
netypeid1 = NULL

从外观上看,我猜想您的health_status列在数据导入中丢失了,导致导入的数据移到了左一列。这将使NULL添加到nettypeid字段中,并且将导入的healthy_nodes_count设置为0,因为导入的字段需要smallint并收到一个varchar字符串。

如果您从数据库表中删除healthy_nodes_count列,则导入应该可以正常进行。否则,您需要确保在导入之前将该字段添加到数据中。

答案 1 :(得分:0)

谢谢大家,在您的提示和我自己的灯泡时刻之间,我意识到health_status列是多余的。从桌子上把它丢下来,我们很好!

非常感谢