gpt4 book ai didi

mysql 将 LOAD DATA LOCAL INFILE 中的十六进制数更改为十进制数

转载 作者:行者123 更新时间:2023-11-29 10:32:53 24 4
gpt4 key购买 nike

所有,我有一个 test.csv 文件,其 ID 为十六进制数字,如下所示:

Id, DateTime,...
66031851, ...
2E337E4E, ...

table_test是使用MYSQL创建的,如下所示:

CREATE TABLE table_test(
Id BIGINT NOT NULL,
DateTime DATETIME NOT NULL,
OtherId BIGINT NOT NULL,
...,
PRIMARY KEY (Id, DateTime, OtherId)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建的table_test如下:

+---------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+-------+
| Id | bigint(20) | NO | PRI | NULL | |
| DateTime | datetime | NO | PRI | NULL | |

我使用 MYSQL 来加载表中的数据:

load data local infile 'test.csv' replace into table table_test character set utf8mb4 fields terminated by ',' ENCLOSED BY '\"' lines terminated by '\n' ignore 1 lines SET Id=CONV(Id, 16, 10);

还尝试过:

SET Id=cast(CONV(Id, 16, 10) AS UNSIGNED)

SET Id=cast(CONV(CONVERT(Id,CHAR), 16, 10) AS UNSIGNED)

但是带有“2E337E4E”等字母的十六进制数字不起作用。它们变成了一些比 BIGINT 还要大的数字。但是当我尝试下面的 MYSQL 时:

select CONV('2E337E4E', 16, 10); 

它按预期工作,并得到正确的结果“775126606”。所以我想我错过了“加载数据”中的一个步骤,将 Id 作为 CONV() 的字符串。搜索了一段时间,没有找到解决办法。有人有一些想法或提示吗?

非常感谢

志宏

最佳答案

此类问题的典型解决方案是将值加载到用户定义变量中,然后在 SET 语句中进行转换。

这样的东西应该适合你:

load data local infile 'test.csv' 
replace into table table_test
character set utf8mb4
fields terminated by ','
ENCLOSED BY '\"'
lines terminated by '\n'
ignore 1 lines
(@Id, `DateTime`, <explicitly list all other columns>)
SET Id=CONV(@Id, 16, 10);

关于mysql 将 LOAD DATA LOCAL INFILE 中的十六进制数更改为十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47056689/

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