在文本文件中添加两列并加载到sql
我想添加两列,然后在我的linux系统上将它们输入到mysql中。在文本文件中添加两列并加载到sql
id , v1 , v2 , v3 , v4 , v5 , v6
5 , 8 , 1 , 9 , 9 , 9 , 6
1 , 4 , 9 , 3 , 5 , 1 , 7
7 , 7 , 2 , 9 , 9 , 2 , 3
8 , 1 , 5 , 1 , 6 , 4 , 7
1 , 3 , 5 , 6 , 4 , 7 , 3
5 , 10 , 6 , 8 , 6 , 3 , 5
4 , 5 , 2 , 1 , 9 , 4 , 2
我想添加v1和v2并将其输入到mysql中。即实际的数据加载到SQL将是这样的:
id , newval , v3 , v4 , v5 , v6
5 , 9 , 9 , 9 , 9 , 6
1 , 13 , 3 , 5 , 1 , 7
7 , 9 , 9 , 9 , 2 , 3
8 , 6 , 1 , 6 , 4 , 7
1 , 8 , 6 , 4 , 7 , 3
5 , 16 , 8 , 6 , 3 , 5
4 , 7 , 1 , 9 , 4 , 2
任何想法如何我可以直接使用这个使用LOAD TABLE? 我当前的解决方法是这样的:提前 DY
这是包括在documentation for LOAD DATA INFILE
...这是不幸的是有组织真的很差
cat a.txt | awk -F "," '{print $1","$2+$3","$4","$5","$6","$7}' > b.txt
mysql> LOAD DATA LOCAL INFILE '/path/b.txt' INTO TABLE values;
感谢。简而言之,您可以将列分配给变量(例如@v1
),然后使用SET
子句中的变量以编程方式设置列值。我将引用文档中的相关部分:
列列表可以包含列名称或用户变量。使用用户变量,
SET
子句使您可以在将结果分配给列之前对其值进行转换。
SET
子句中的用户变量可以以多种方式使用。下面的示例直接使用所述第一输入列的t1.column1
值,和第二输入栏分配给正被用于的t1.column2
值之前进行除法操作的用户变量:LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET column2 = @var1/100;
所以你的情况,你会想是这样的:
LOAD DATA LOCAL INFILE '/path/b.txt'
INTO TABLE values
(id , @v1 , @v2 , v3 , v4 , v5 , v6)
SET newval = @v1 + @v2;
这台id
,v3
,v4
,v5
,并且v6
从第1和4列输入文件中的第7到第7列,并将第2列和第3列分配给变量@v1
和@v2
。然后它将newval
列设置为@v1 + @v2
的结果。
我希望这很有帮助。
非常感谢。在文档确实涵盖了这个问题之后,我对这个问题感到很尴尬。你的回答使它更加清晰。 – user3259040 2014-10-30 18:50:21
对于组织良好的问题,带有样本数据,需要的输出和一些工作代码+1。对不起,我不知道mysql中的LOAD TABLE。祝你好运,并保持张贴! ;-) – shellter 2014-10-30 18:26:39