我有一个要在MySQL表中导入的文本文件。文件的列以逗号分隔。我设置了一个合适的表,我使用了命令:
load data LOCAL INFILE 'myfile.txt' into table mytable FIELDS TERMINATED BY ‘,’;
问题是,文本文件中有几个空格,在每列的数据之前和之后,似乎这些空间都是在表中导入的(这不是我想要的)。有没有办法加载没有空格的文件(除了在导入MySQL之前处理文本文件的每一行)?
答案 0 :(得分:2)
据我所知,在动态加载数据文件的过程中无法做到这一点(我也看过)。
似乎处理此问题的最佳方法是将SET
子句与TRIM
一起使用
功能
("SET column2 = TRIM(column2)")
或使用TRIM()
函数在加载后对字符串列运行更新。
您还可以使用预准备语句创建存储过程,以便在加载后立即对指定表中的所有列运行TRIM函数。
您实际上将表名作为变量传入,sp将使用information_schema数据库来确定要上载的列。
答案 1 :(得分:0)
如果您可以使用.NET,CSVReader是一个很好的选择(http://www.codeproject.com/KB/database/CsvReader.aspx)。您可以从CSV读取数据并指定分隔符,修剪选项等。在您的情况下,您可以选择从每个值修剪左右空格。然后,您可以将结果保存到新的文本文件并将其导入数据库,或者循环访问CsvReader对象并直接将每行插入数据库。 CsvReader的性能令人印象深刻。希望这会有所帮助。