大家好,我需要将文件加载到表中
我用
LOAD DATA INFILE 'D:....example.txt' INTO TABLE test_table
CHARACTER SET utf8
LINES TERMINATED BY '\r\n';
我的文件看起来..
4STPS 0000000480000015426 20040425 42.480060981876 20150325 11
4STPS 0000000480000015458 20040425 110.240060981880 20150325 11
4STPS 0000000480000015492 20040425 242.500060981883 20150325 11
4STPS 0000000480000015583 20040510 92.510060981888 20150325 11
4STPS 0000000480000015584 20040510 92.490060981889 20150325 11
4STPS 0000000480000015592 20040510 87.140060981890 20150325 11
4STPS 0000000480000015631 20040510 117.500060981896 20150325 11
我的 table 是...
CREATE TABLE `test_table` (
`me` varchar(4) DEFAULT NULL,
`group_b` varchar(10) DEFAULT NULL,
`agent` varchar(9) DEFAULT NULL,
`element` varchar(10) DEFAULT NULL,
`ini_vig` decimal(8,0) DEFAULT NULL,
`amount` decimal(10,4) DEFAULT NULL,
`recive` varchar(8) DEFAULT NULL,
`ven_rbo` decimal(8,0) DEFAULT NULL,
`ado` varchar(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
当我执行时出现此错误错误代码:1406。第 1 行的列“me”的数据太长
我所做的是计算字段之间的空格是否为字母数字,数字字段仅在字段之间添加。
我无法更改文件结构我如何更改表格以便您可以保存信息?
最佳答案
您的LOAD DATA INFILE
目前仅看到一列
您需要执行以下操作
步骤 01:创建单列表以加载批量数据
use test
DROP TABLE bulkdata;
CREATE TABLE bulkkdata
(
id INT NOT NULL AUTO_INCREMENT,
txt CHAR(84),
PRIMARY KEY (id)
);
第02步:加载单列批量数据
LOAD DATA INFILE 'D:....example.txt' INTO TABLE bulkdata
CHARACTER SET utf8
LINES TERMINATED BY '\r\n' (txt);
第 02 步:使用 SUBSTR()从 txt
字段中提取字段
INSERT INTO test_table (me,group_b,agent,element,...)
SELECT
SUBSTR(txt,1,4),
SUBSTR(txt,5,10),
SUBSTR(txt,15,9),
SUBSTR(txt,24,10),
...
FROM bulkdata;
尝试一下!!!
关于mysql 加载数据内文件,不带字段终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30404829/