2013-02-20 121 views
1

我有txt文件包含超过50000 records.those 4记录(pid,#_ pro_used,未使用,选中)与tab空间分开。我想插入这些记录到一个有5列(index,pid,#_ pro_used,notused,selected)..额外的一个(索引)列应该是包含记录计数的主键。加载数据INFILE与txt文件

我已经使用这个命令..但它不工作。

LOAD DATA LOCAL INFILE 'D:/temp.txt' INTO TABLE temp_table (COUNT(pid),pid,#_pro_used,notused,selected); 

这可能吗?或者我应该去触发一下?

+0

欢迎来到StackOverflow!当你说它不起作用时,请给出你收到的任何详细的错误信息,并给出你要加载的表的结构,以及几行源数据来帮助我们。 – 2013-02-20 17:58:09

+0

这是它 - 错误代码:1064 您的SQL语法有错误;请检查第1行 – san88 2013-02-20 18:07:29

+0

处的“Count(pid),pid,#_ pro_used,notused,selected”附近使用的正确语法对应的MySQL服务器版本的手册是否可以使用LOAD DATA INFILE命令插入列这是不是在数据导入源..如果没有那么我怎么做it.please帮助 – san88 2013-02-20 18:12:03

回答

2

您不能使用COUNT(pid)来计算远处插入的条目数。具有自动增量列创建一个表,并跳过“COUNT(PID)”的一部分,所以:

CREATE TABLE temp_table (
    idx INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    pid ... 
    pro_used ... 
    notused 
    selected 
); 

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,notused,selected); 

刚一说明:您有一个名为“NOTUSED”一栏,我以为你要忽略。您可以在这里使用一个用户定义的变量,然后它将丢弃数据:

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,@notused,selected); 
+0

仍然显示错误您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,在第1行使用正确的语法 – san88 2013-02-20 18:40:56

+0

LOAD DATA LOCAL INFILE'D:/temp.txt' INTO TABLE temp_table (pid,#_ pro_used,notused,selected) ; – san88 2013-02-20 18:41:35

+0

创建表命令 - CREATE TABLE'temp_table'( 'indexid' INT(11)无符号NOT NULL AUTO_INCREMENT, 'pid' VARCHAR(5)NOT NULL, '#_pro_used' INT(11)DEFAULT NULL, 'notused' double DEFAULT NULL, 'selected' double DEFAULT NULL, PRIMARY KEY('indexid') ) – san88 2013-02-20 18:44:06