use*_*713 24 mysql csv mysql-workbench
我有一个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';
Run Code Online (Sandbox Code Playgroud)
此查询有效,如果我有200个列名称怎么办?没有手动输入它有没有办法做到这一点?
Rem*_*ems 54
这个命令几乎可以满足您的需求,甚至可以与远程服务器配合使用.唯一需要注意的是它会生成一个TSV文件(字段由选项卡分隔).
mysql mydb -e "select * from mytable" -B > mytable.tsv
Run Code Online (Sandbox Code Playgroud)
但是你可以使用sed将它转换为CSV,如本回答所示
mysql mydb -e "select * from mytable" -B | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > mytable.csv
Run Code Online (Sandbox Code Playgroud)
小智 5
DESCRIBE addstock25;\nRun Code Online (Sandbox Code Playgroud)\n\n删除第一列和该列的前三个条目(这取决于您的使用情况)。您将获得 addstock25 中的字段列表。
\n\n这将只带来使用核心中派生的虚拟表的字段名称...称为信息模式。
\n\nSELECT `COLUMN_NAME` \nFROM `INFORMATION_SCHEMA`.`COLUMNS` \nWHERE `TABLE_NAME`=\'foo\';\nRun Code Online (Sandbox Code Playgroud)\n\n令\xe2\x80\x99s 表示该查询的名称为sq_fieldnamelist。
\n\n因此,上表有一列,其中包含“foo”表的字段名称。
\n\n如果直接写成这样
\n\nSELECT (sq_fieldnamelist)\nUNION ALL\nSELECT *\nFROM addstock25\nINTO OUTFILE "E:\\\\JOSE DATA\\\\addstock7.csv"\nFIELDS TERMINATED BY \',\'\nENCLOSED BY \'"\'\nLINES TERMINATED BY \'\\n\nRun Code Online (Sandbox Code Playgroud)\n\nMySQL会报错。“子查询返回多行”
\n\n我们必须编辑 sq_fieldnamelist 以将所有条目背靠背连接,并用逗号分隔。
\n\nSelect GROUP_CONCAT(COLUMN_NAME)\nFROM\n(SELECT `COLUMN_NAME` \nFROM `INFORMATION_SCHEMA`.`COLUMNS` \nWHERE `TABLE_NAME`=\'ffd_companies\'\nLIMIT 3,100\n) AS fafa\nGROUP BY \'COLUMN_NAME\' // This group by is just to make group concatenation work\nRun Code Online (Sandbox Code Playgroud)\n\n假设这是 sq_fieldnamelist2。
\n\n如果我们像这样编辑 sq_fieldnamelist ,它将只返回一个值,即所有字段名称以逗号分隔。现在我们可以将这个子查询放在 select 语句中来获取所需的字段。
\n\nSELECT (sq_fieldnamelist2)\nUNION ALL\nSELECT *\nFROM addstock25\nINTO OUTFILE "E:\\\\JOSE DATA\\\\addstock7.csv"\nFIELDS TERMINATED BY \',\'\nENCLOSED BY \'"\'\nLINES TERMINATED BY \'\\n\nRun Code Online (Sandbox Code Playgroud)\n\n您需要根据自己的目的编辑 sq_fieldnamelist2 中的 LIMIT 3,100。
\n\n假设您的表类似于 fil1、fil2...filN、sal1、sal2、sal3...、salI。要查看唯一的工资字段,您应该使用LIMIT N, x > I+N。如果您想查看全部,请使用LIMIT 0, x > N+I.
| 归档时间: |
|
| 查看次数: |
83133 次 |
| 最近记录: |