我有一个MySQL表,必须将其作为CSV文件取出。
SELECT "ID","NAME","SALARY","SAL1","SAL2","SAL3","SAL4","SAL5","SAL6","SAL7","SAL8","SAL9","SAL10","SAL11","SAL12","SAL13","SAL14","SAL15","SAL16","SAL17","SAL18","SAL19","SAL20","SAL21","SAL22","SAL23","SAL24","SAL25","SAL26"
UNION ALL
SELECT *
FROM addstock25
INTO OUTFILE "E:\\JOSE DATA\\addstock7.csv"
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
这个查询是有效的,但是如果我有200个列名怎么办?有没有不需要手动输入的方法?
5条答案
按热度按时间ruyhziif1#
这个命令几乎给了你想要的东西,它甚至可以与远程服务器一起工作。唯一需要注意的是,它生成了一个TSV文件(字段由制表符分隔)。
但是您可以使用sed将其转换为CSV,如以下答案所示:
62o28rlo2#
去掉第一列和该列的前三个条目(这取决于您的用法),您将得到addstock25中的字段列表。
这将只带来使用核心中派生的虚拟表的字段名...称为信息模式。
假设这个查询的名称是sq_fieldnamelist。
因此,上面的表有一列,其中包含“foo”表的字段名。
如果直接写
MySQL将给予错误。“子查询返回多行”
我们必须编辑sq_fieldnamelist以将所有条目背靠背地连接起来,并以逗号分隔。
假设这是sq_fieldnamelist2。
如果我们像这样编辑sq_fieldnamelist,它将只返回一个值,即所有字段名都用逗号分隔,所以现在我们可以将这个子查询放在select语句中以获取所需字段。
您需要根据自己的需要编辑sq_fieldnamelist2中的LIMIT 3,100。
假设您的表为fil1、fil2...filN、sal1、sal2、sal3....、salI。要查看仅有的薪金字段,应使用
LIMIT N, x > I+N
。如果要查看所有字段,则使用LIMIT 0, x > N+I
。stszievb3#
我不明白你为什么不能
fxnxkyjh4#
我觉得你在找这样的东西。
注意,我添加了
WHERE
子句TABLE_SCHEMA
= 'yourdatabasename'。brgchamk5#
可以使用“表格数据导出向导”,并从那里复制选择的SQL;