mysql - 我无法从文件中加载仅包含整数列的 MySQL 表

标签 mysql import load-data-infile

我正在尝试将数据导入到 MySQL 表。

表格:

CREATE TABLE `MYTABLE` (
  `F1` bigint(20) NOT NULL,
  `F2` bigint(20) NOT NULL,
  `F3` int(11) NOT NULL,
  `F4` bigint(20) DEFAULT NULL,
  `F5` tinyint(4) NOT NULL,
  `F6` bigint(20) NOT NULL,
  `F7` bigint(20) NOT NULL,
  PRIMARY KEY (`F1`)
) ENGINE=InnoDB default charset=latin1;

数据文件包含这种形式的记录,这些记录之间用制表符分隔:

229733561174    44224449355443  0   0   0   55555557555000  12345678901

导入命令:

mysql> load data infile 'try.txt' INTO TABLE MYTABLE;

我收到的警告:

<表类=“s-表”> <标题> 级别 代码 消息 <正文> 警告 1366 整数值不正确:第 1 行“F1”列的“229733561174” 警告 1366 整数值不正确:第 1 行“F2”列的“44224449355443” 警告 1366 第 1 行“F3”列的整数值不正确:“0 0 0 55555557555000 12345678901” 警告 1261 第 1 行不包含所有列的数据 警告 1261 第 1 行不包含所有列的数据 警告 1261 第 1 行不包含所有列的数据 警告 1261 第 1 行不包含所有列的数据
7 rows in set (0.00 sec)

我不明白为什么前两列的值是 Incorrect integer value 以及为什么第 3-7 列的值都被视为单列。

我尝试将字段分隔符更改为“,”(在加载数据命令中指定它),但仍然收到相同的警告。

输出表的所有列均包含 0(除了获取 NULL 的可选列)。

有人可以告诉我我做错了什么吗?

最佳答案

我发现了问题。我的数据库中的默认字符集是 ucs2,这导致了问题。 如果我在 load data infile 命令中指定不同的字符集,则一切正常:

load data infile 'try.txt' ignore 
into table MYTABLE
character set latin1
fields terminated by '\t' enclosed by '' escaped by '\\'
lines terminated by '\n' starting by ''
ignore 1 lines;

关于mysql - 我无法从文件中加载仅包含整数列的 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19500229/

相关文章:

php - MySQL 数据库迁移失败

mysql - 正确的数据库设计,在数据库中存储大量的股票加密货币数据

python程序无法在cmd中运行

javascript - jsp 导入和 js 变量

mysql - secure-file-priv 阻止 INTO OUTFILE 命令

php - 使用 http ://location broken 加载数据本地 infile

php - 如何使用带有 SSL 的 mysqli 连接

Java:导入语句与完全限定名称?

mysql - 如何对加载数据 infile 查询进行故障排除

mysql - 应用程序在生产环境中运行时更改 mysql 存储引擎的后果