我有一个要插入到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
答案 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列是多余的。从桌子上把它丢下来,我们很好!
非常感谢