如何在没有空格的情况下将数据加载到MySQL表中?

时间:2010-12-27 15:38:51

标签: mysql file-upload

我有一个要在MySQL表中导入的文本文件。文件的列以逗号分隔。我设置了一个合适的表,我使用了命令:

load data LOCAL INFILE 'myfile.txt' into table mytable FIELDS TERMINATED BY ‘,’;

问题是,文本文件中有几个空格,在每列的数据之前和之后,似乎这些空间都是在表中导入的(这不是我想要的)。有没有办法加载没有空格的文件(除了在导入MySQL之前处理文本文件的每一行)?

2 个答案:

答案 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的性能令人印象深刻。希望这会有所帮助。