kid*_*rax 0 mysql csv bash mysqldump batch-file
所以我有一个运行批处理脚本的批处理服务器.此脚本为我们的数据库服务器发出mysqldump命令.
mysqldump -h nnn.nn.nnn.nn -u username -p password --tab=/var/batchfiles/ --fields-enclosed-by='"' --fields-terminated-by="," --fields-escaped-by="\\" --lines-terminated-by="\\n" store_locations stores
Run Code Online (Sandbox Code Playgroud)
当命令运行时,我收到一个错误:
Can't create/write to file '/var/mi6/batch/stores.txt' (Errcode: 2) when executing 'SELECT INTO OUTFILE'
Run Code Online (Sandbox Code Playgroud)
现在我已经尝试按照http://techtots.blogspot.com/2011/12/using-mysqldump-to-export-csv-file.html的建议输出到/ tmp目录,它仍然无法写入文件因为它告诉我它已经存在,即使它没有.
最重要的是,我希望能够在服务器A上运行一个脚本,该脚本为数据库服务器发出mysql命令,并将该输出文件以csv格式保存到服务器A.
仅供参考,我也试过运行mysql并将输出重定向到文件.这会创建一个标签文件但你没有太多的输出控制权,所以它也不会真正起作用.
mysqldump在一种--tab模式下是一个CLI工具SELECT INTO OUTFILE.后者通常应该用于重新创建分隔文件,并且仅在数据库服务器主机上创建.
SELECT ... INTO语法
SELECT ... INTO OUTFILE语句主要用于让您非常快速地将表转储到服务器计算机上的文本文件中.如果要在服务器主机之外的其他主机上创建生成的文件,通常无法使用SELECT ... INTO OUTFILE,因为无法相对于服务器主机的文件系统写入文件的路径.
您至少有以下选项:
使用mysql,而不是mysqldump在远程主机上创建一个制表符分隔的文件,而不是
mysql -h<host> -u<user> -p<password> \
-e "SELECT 'column_name', 'column_name2'... \
UNION ALL SELECT column1, column2, FROM stores" > \
/path/to/your/file/file_name
Run Code Online (Sandbox Code Playgroud)您可以使用sed或管道它,awk并从制表符分隔输出创建一个CSV文件.见这对于细节
您可以为远程主机上的文件创建位置,该文件可通过db server的文件系统上的网络映射路径访问.
| 归档时间: |
|
| 查看次数: |
3029 次 |
| 最近记录: |