我对 MySQL/SQL 比较陌生,这是我在这个网站上的第一篇文章,所以如果我对这个问题的表述不佳,我深表歉意。
我将 .xlsx 文件的副本保存为 .csv 文件。我正在尝试将该 .csv 文件中的数据加载到表中。我收到以下错误消息:
0 行受影响,64 个警告:1265 第 1 行的列 'ptsg' 的数据被截断
此处的错误日志:http: //pastie.org/private/byzcwjtslxpfjyhoog2g
在这里查询:http: //pastie.org/private/tyzkbyqnuwpsafrjxcetq#6,8,12-13
我尝试过使用“ptsg”列数据类型,将其从浮点数更改为十进制,但没有运气。
插入该列的数据最多为 4 位有效数字,采用“100”或“100.2”之类的形式,小数点前最多有 1 个数字。
我还有其他浮点列可以很好地处理像“0.347”这样的数据。为什么我的数据被截断?
以下是 .csv 格式的三行数据:
2013掘金,2013,1,丹佛,掘金,丹佛掘金,82,19705,3145,6613,0.476,662,1704,0.388,1859,2429,0.765,791,2652,3443,1813,605,352,1157,1719,81 ,107.5 2013尼克斯,2013,2,纽约,尼克斯,纽约尼克斯,82,19780,3140,6867,0.457,765,2081,0.368,1689,2087,0.809,847,2470,3317,1757,625,475,1123,1743 ,8734,106.5 2013火箭,2013,3,休斯顿,火箭,休斯顿火箭,82,19880,3170,6975,0.454,677,1843,0.367,1668,2083,0.801,962,2549,3511,1955,581,371,1110,1641,8658 ,105.9 2013太阳,2013,4,凤凰,太阳,凤凰太阳,82,20005,3219,6844,0.47,701,1857,0.377,1472,1939,0.759,821,2478,3299,1945,545,357,1169,1666,8611 ,105
查询的输出:SHOW WARNINGS;
注 1265 第 1 行的“ptsg”列的数据被截断 注 1265 第 2 行的“ptsg”列的数据被截断 注释 1265 第 3 行的“ptsg”列的数据被截断 注释 1265 第 5 行的“ptsg”列的数据被截断 ...
更新:
感谢peterm,我注意到我对列'ptsg'错误地使用了“十进制”数据类型。我使用 DECIMAL(10,0) 而不是 (10,1)。我的 64 条警告已减少到 1 条。
0 行受影响,1 个警告:1366 十进制值不正确:第 1246 行的列 'ptsg' 记录:1334 已删除:0 跳过:1334 警告:1
第 1246 行有 ptsg 的空白。我上面的查询(具体来说,ptsg = NULLIF(@vptsg,''))应该?将第 1246 行的“NULL”插入 ptsg 列。我检查了表格,并且 ptsg 列 DECIMAL(10,1) 应该允许 NULL 值,因为我没有选中“NN”或“Not Null”复选框。
第 1246 行看起来像: 1955Bullets,1955,9,Baltimore,Bullets,Baltimore Bullets,,,,,,,,,,,,,,,,,,,,,
我又犯了一个愚蠢的错误吗?