sqlCREATE TABLE IF NOT EXISTS table1 (
id VARCHAR(255) NOT NULL COMMENT 'id',
name VARCHAR(255) NOT NULL COMMENT '名字',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.需要开启临时本地导入文件权限和临时设置会话时间
sqlSET GLOBAL local_infile = 1;
-- 临时设置(当前会话有效)
SET GLOBAL wait_timeout = 86400; -- 24小时
SET GLOBAL interactive_timeout = 86400;
SET GLOBAL net_read_timeout = 3600; -- 1小时
SET GLOBAL net_write_timeout = 3600;
sqlLOAD DATA LOCAL INFILE 'E:/shuju/6.9.txt' -- 本地文件路径
INTO TABLE table1 -- 导入的表名
FIELDS TERMINATED BY '----' -- 表数据的分隔符
LINES TERMINATED BY '\n' -- 导入后换行
(id, name);
-- 以下是忽略错误行导入
LOAD DATA LOCAL INFILE 'E:/shuju/6.9.txt'
IGNORE INTO TABLE table1 -- 忽略错误行
FIELDS TERMINATED BY '----'
LINES TERMINATED BY '\n'
(id, name);
4.当存在第三列时,第二列存入qq2字段;否则qq2保持NULL57。COALESCE函数确保phone总取最后一列
sqlLOAD DATA LOCAL INFILE 'E:/shuju/6.9_part1.txt'
IGNORE INTO TABLE qq
FIELDS TERMINATED BY '----'
LINES TERMINATED BY '\n'
(@col1, @col2, @col3)
SET
qq = @col1,
qq2 = IF(@col3 IS NULL, NULL, @col2),
phone = COALESCE(@col3, @col2);
5.当表里有大量数据时,查询会比较吃力,可以建立索引进行查询。
sql-- 把id字段改为bigint类型,节省存储空间(bigint 比 varchar(20) 更高效
ALTER TABLE id MODIFY id BIGINT NOT NULL;
-- 创建索引设置对应字段
CREATE INDEX 索引名称 ON 表名 (字段) USING BTREE;
-- 如果表中是varchar类型,需要强制遵守该sql写法,不然索引失效
SELECT * FROM 表 WHERE 字段 = '123456789';
注意
如果是varchar类型这样索引是不生效的:
SELECT * FROM 表 WHERE 字段 = 123456789;
相反如果是bigint类型就可以这样查询,索引是生效的
本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!