How do I import a whitespace-delimited text file into MySQL?

load-data-infile, mysql, mysqlimport

Solution

If you're on unix/linux then you can put it through sed.

open a terminal and type:

sed 's/ \+/ /g' thefile > thefile.new

this replaces all sequences of multiple spaces with one space.

Problem

I need to import largish (24MB) text files into a MySQL table. Each line looks like this: ``` 1 1 0.008 0 0 0 0 0 ``` There are one or more spaces after each field, and the last field is tailed by about 36 spaces before the newline. How do I import such a file into MySQL? From the documentation it seems that LOAD DATA expects all fields to be terminated by exactly the same string. I have tried ``` LOAD DATA INFILE 'filename' INTO TABLE mytable FIELDS TERMINATED BY ' '; ``` but MySQL will interpret a sequence of more than one space as delimiting an empty field. Any ideas?

Original source