What's below works for your data - be careful of any variation in the field width - that's why delimited files are better - csv, or better still, if you can get it, pipe-delimited (|). It also successfully deals with the header line.
I did the following:
My code will do for both MD5 and SHA2 passwords - uncomment the relevant bits.
CREATE TABLE my_user
(
user_id int not null auto_increment primary key,
username varchar(11),
p_word varchar(64), -- VARCHAR(32) for MD5
e_mail varchar(75)
);
using a sample based on your data (users.csv)
$> more users.csv;
Username Password Email
test123 123 [email protected]
test456 567 [email protected]
$>
And then after some Googling, I came up with this
LOAD DATA
INFILE '/mysql/mdb5.5/inst/users.csv'
INTO TABLE my_user
IGNORE 1 LINES
(@row)
SET username = TRIM(SUBSTR(@row, 1, 11)),
-- p_word = MD5(TRIM(SUBSTR(@row, 12, 22))),
p_word = SHA2(TRIM(SUBSTR(@row, 12, 11)), 256),
e_mail = TRIM(SUBSTR(@row, 23, 80))
;
And voilà!
MariaDB [test]> select * from my_user;
+---------+----------+------------------------------------------------------------------+-----------------+
| user_id | username | p_word | e_mail |
+---------+----------+------------------------------------------------------------------+-----------------+
| 1 | test123 | a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3 | [email protected] |
| 2 | test456 | 97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55 | [email protected] |
+---------+----------+------------------------------------------------------------------+-----------------+
2 rows in set (0.01 sec)
md5
for password hashing.