gpt4 book ai didi

sql - 如何从 CSV 获取 SQL LOAD DATA 以在加载时遵循列类型?

转载 作者:行者123 更新时间:2023-11-29 01:02:38 26 4
gpt4 key购买 nike

我正在使用 CREATE TABLELOAD DATA 将 CSV 文件加载到 MySQL (5.1) 中。我有许多列是文本类型(类别)但包含数值。当我创建表时,我将这些列分配为 VARCHAR(254) 但 JDBC 驱动程序抛出 SQLException“Data truncated for column AgeGroup at row 1”。

我的数据是这样的:

ID,AgeGroup
xxx,4
xxy,3
xyx,6
...

我的建表语句是这样的

CREATE TABLE abc(ID VARCHAR(254), AgeGroup VARCHAR(254))

我的加载语句是这样的

LOAD DATA INFILE \myfile.csv\ INTO TABLE abc FIELDS TERMINATED BY ','

我猜这是一个类型转换问题,因为 AgeGroup 是一个文本数据库列,但我在其中粘贴了看起来像是数字的内容。

我如何 - 我可以 - 强制 LOAD DATA 命令遵循列的数据类型并转换文件的内容吗?

我正在使用官方的 MySQL JDBC 驱动程序。

最佳答案

我很惊讶这不起作用。我的意思是,我希望在数字列中粘贴字符串值时出现这种行为,而不是相反。

无论如何,您可以使用 v5.0 中引入的 LOAD DATA 语法的扩展来根据原始数据计算任意表达式:

LOAD DATA INFILE \myfile.csv\ 
INTO TABLE abc
FIELDS TERMINATED BY ','
(@ID, @AgeGroup)
SET ID = @ID
, AgeGroup = CAST(@AgeGroup AS UNSIGNED)

(参见:http://dev.mysql.com/doc/refman/5.1/en/load-data.html

关于sql - 如何从 CSV 获取 SQL LOAD DATA 以在加载时遵循列类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016649/

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