我想做以下事情 mysql -uuser -ppass -h remote.host.tld database < script.sql
其中script.sql包含以下内容
SELECT *
FROM webrecord_wr25mfz_20101011_175524
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
我希望CSV输出指向标准输出.原因是因为使用an运行此查询INTO OUTFILE 'blah.csv'将保存远程主机上的文件.我希望文件保存在本地主机上.
如果我可以将标准输出重定向到文件,那将是花花公子.
我正在使用写入outfile的MySQL查询.我每天或每两天运行一次这样的查询,所以我希望能够删除outfile而不必诉诸su或sudo.我能想到实现这一目标的唯一方法是将outfile编写为由mysql用户以外的其他人所拥有.这可能吗?
编辑:我没有将输出重定向到文件,我使用选择查询的INTO OUTFILE部分输出到文件.
如果它有帮助:
mysql --version mysql Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (x86_64) using readline 5.2
我在使用MySQL的SELECT ... OUTFILE遇到一些困难,结果集包括空值和需要双引号转义的列(即包含'"'字符的列).这是我使用的outfile语法:
INTO OUTFILE '$csv_file'
FIELDS ESCAPED BY '""' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
Run Code Online (Sandbox Code Playgroud)
我的问题是关于查询的FIELDS ESCAPED BY部分 - 如果省略此部分,则空值将正确导出(...,"\ N",...是csv中的样子).
但是,包含双引号的列将在excel中的多个行/列中拆分.这是因为excel要求列中的'\n''字符通过将它们写为'""来进行转义.
包括FIELDS ESCAPED BY子句修复了包含双引号字符的列的excel问题,但是,它会打破NULL列.NULL列导出为(..."N,...),缺少列上的反斜杠和尾部引号.在excel中,由于缺少关闭引号,这会导致多列相互折叠.
我的目标是能够导出包含双引号和换行符的列,以及将空列导出为\ N,但是我似乎无法弄清楚如何做到这一点.MySQL文档声明FIELDS ESCAPED BY会影响NULL列的输出方式,但我无法弄清楚转义序列'""会导致如何删除NULL列上的反斜杠和尾随引号
目前,我的解决方案是在每行输出一个字符串替换,因为我将它输出给用户,使用FIELDS ESCAPED BY并将'"N"替换为'"\ N",'.这似乎有效,但它没有感觉不错,我担心会引起某种问题
选择列上的IFNULL()可能是一个选项,但我们在代码中使用它的方式实际上很难实现.还需要对可能具有NULL值的每个列进行操作,因此如果可以的话,这是我想要避免的解决方案
谢谢!
所以我试图将MySQL表导出为CSV.我正在使用此查询:
SELECT * FROM business WHERE id > 0 AND id <= 20000 INTO OUTFILE "business.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n";
Run Code Online (Sandbox Code Playgroud)
输出的内容如下:
http://postimage.org/image/2ghyenh5w/full/
这个问题是,总是有一个额外的反斜杠\,其中有换行符,例如在地址字段中.
但是,从phpMyAdmin导出的CSV没有它:
http://postimage.org/image/2gi026tno/full/
任何方式使SELECT ... OUTFILE ...做同样的事情?
我正在处理的表有2000万条记录,phpMyAdmin只能为每个导出操作处理大约500,000条记录 - 否则它将变为空白或mysql服务器消失等.
我正在尝试做一个SELECT INTO OUTFILE,我收到以下错误:
General error: 1 Can't create/write to file '/home/jason/projects/mcif/web/downloads/dump.csv' (Errcode: 13). Failing Query: "
SELECT name
INTO OUTFILE '/home/jason/projects/mcif/web/downloads/dump.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM account a
Run Code Online (Sandbox Code Playgroud)
我知道问题可能是:downloads我的MySQL用户无法写入我的文件夹.我不知道如何解决这个问题有两个原因:
downloads文件夹的用户我在Ubuntu Linux上.有人可以帮我解决这两件事吗?
我对SQL很缺乏经验,所以对我的问题应该有一个简单的解决方案:我在一个以逗号分隔的文件中选择一个表,而TEXT类型的列有换行符,所以当我尝试将我的csv导入Excel时,它会在换行符后面的每一段文本中创建单独的行.
这是我的查询:
SELECT * FROM `db`.`table` INTO OUTFILE 'c:\\result.txt' FIELDS TERMINATED BY ','
ESCAPED BY '\\' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' ;
Run Code Online (Sandbox Code Playgroud)
然后在Excel中我导入为逗号分隔文件,这会导致包含带换行符的文本的列出现问题.
任何帮助表示赞赏!
有谁知道在哪里可以找到MySQL的SELECT ... OUTFILE语句的所有导出选项的文档?我在多个问题参数中注意到了
FIELDS ENCLOSED BY delimiter
FIELDS ESCAPED BY delimiter
FIELDS TERMINATED BY delimiter
Run Code Online (Sandbox Code Playgroud)
但我还没有找到完整的参数列表.有人可以帮忙吗?
嘿,伙计们.所以,我试图找出如何在mysql数据库中的多个表中选择每个字段,并将结果表输出到Excel的.csv文件.我发现臭名昭着的stackoverflow问题处理.csv ouput并在那里有所有代码.所以,我想我要问的是:
有没有办法做一个看起来像这样的mysql查询?
SELECT * prof.id AS youth_id FROM time time, profiles prof, WHERE foo='bar'
Run Code Online (Sandbox Code Playgroud)
并让它从两个(或类似4个)表中选择所有内容,但选择id为youth_id,或者如果我需要选择某些值作为另一个名称,是否必须指定我想要的每个值?
我想不必指定每个字段,因为我有50+输出.
我试图搜索,但无法真正找到我需要的东西.我猜你是否可以指出我的方向很好.
我有以下代码:
SELECT * INTO OUTFILE'~/TestInput/Results.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM Results;
Run Code Online (Sandbox Code Playgroud)
期望的结果是不断继续追加到Results.csv
我在服务器上有一个shell脚本.该脚本将csv文件吐出到本地目录.问题是数据库服务器在服务器b上.如何在这样的设置中使用select*into outfile?
我明白了
Can't create/write to file '/home/username/test.csv/' (Errcode: 2)
Run Code Online (Sandbox Code Playgroud)
使用'LOCAL'关键字解决了加载数据的影响.outfile有类似的东西吗?