我在数据日志文件中有以下格式的数据。
每行代表数据库中的一行,一次插入500-1000行。
最好通过调用存储过程直接在数据库中插入数据(该过程包含调用日志文件和插入数据的逻辑)
OR
在应用程序中解析它并插入数据是否更好。
29 2011-02-01 11:00:40 1 0 1 0
30 2011-02-01 11:00:44 1 0 1 0
32 2011-02-01 11:00:49 1 0 1 0
答案 0 :(得分:1)
这可能是.tsv格式(制表符分隔值)。
LOAD DATA LOCAL INFILE 'uniq.csv' INTO TABLE tbl
FIELDS TERMINATED BY '\t'
ENCLOSED BY ''
LINES TERMINATED BY '\n'
(column1, column2, column3)
\ t是制表符。如果它不起作用,请将其更改为空间。
逐行手动处理效率不高,因为当您尝试逐行读取时,将多次访问硬盘。 LOAD命令应该立即读取整个文件。
你应该记住,索引会严重减慢这样的插入速度。如果你需要读取大量数据(例如100000行) - 有时最好在插入后删除索引,插入和重新创建索引。
答案 1 :(得分:0)
更好(性能)以批量方式插入数据(使用LOAD FROM或事务。我假设存储执行类似操作),而不是一次插入一个,每行一次查询。