Wes*_*son 8 php mysql linux cron export-to-csv
我需要将数据从表导出到csv.我有以下结构(不是我的表,但出于演示目的)
CREATE TABLE `mytable` (
`id` int(11) DEFAULT NULL,
`mycolumn` varchar(25) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
数据(约3000条记录).现在我想导出一些这些记录(从我通过cronjob运行的脚本)
SELECT * INTO OUTFILE '/tmp/mytable.sql'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM mytable;
Run Code Online (Sandbox Code Playgroud)
表明:
Query OK, 3 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
然后我做:
ls: cannot access /tmp/mytable.sql: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的档案在哪里?
使用该INTO OUTFILE
命令时,它会将数据导出到服务器的本地文件夹,而不是您正在执行查询的文件夹.
例如:您在您的计算机(IP:192.168.0.100),并且您连接到mysqlserver(IP:192.168.0.101)使用mysql命令:mysql -uuser -h192.168.0.101 -A database
.通过执行该SELECT * INTO OUTFILE
文件保存在mysqlserver(ip:192.168.0.101)而不是保存在您的计算机上(ip:192.168.0.100).
现在,您可以使用创建CSV文件的脚本(在您的cronjob中 - 您选择所有数据,生成文件并通过scp发送到其他服务器).
或者 - 您也可以安装NFS /shared/
,当您自动创建文件时,其他服务器也会安装.
或者 - 您可以在第一台服务器上以这样的bash脚本运行mysql命令.
mysql -uroot test -B -e "select * from test.mytable;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/filename.csv
Run Code Online (Sandbox Code Playgroud)
来源:http://tlug.dnho.net/node/209