Mysql 带文件读取的SQL远程连接

Mysql 带文件读取的SQL远程连接,mysql,database,windows,sqlcommand,Mysql,Database,Windows,Sqlcommand,因此,我试图重新访问我的服务器数据库,并让它运行命令,将多个表全部导出到单个csv文件中。所以我有一个命令行命令参数,如下所示: mysql -h 198.xxx.xxx.xxx -u user-p < file.txt SELECT * FROM log INTO OUTFILE 'C:\USERS\username\Desktop\log.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

因此,我试图重新访问我的服务器数据库,并让它运行命令,将多个表全部导出到单个csv文件中。所以我有一个命令行命令参数,如下所示:

mysql -h 198.xxx.xxx.xxx -u user-p < file.txt
SELECT * FROM log
INTO OUTFILE 'C:\USERS\username\Desktop\log.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'


SELECT * FROM permission_types
INTO OUTFILE 'C:\USERS\username\Desktop\permission_types.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'


SELECT * FROM personal_info_options
INTO OUTFILE 'C:\USERS\username\Desktop\personal_info_options.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
我不确定我是否有正确的语法,或者这是否可能,我已经做了大量的研究,试图得到一些例子。人们通常会告诉你这个概念,但似乎从来没有给你测试他们所需的代码。它总是类似于:

mysql -h localhost -u user-p < somefile and they don't show you contents 
of a file for example
mysql-h localhost-u user-p
我运行的是Windows7,我安装了WAMPServer,它有MYSQL版本5.5.24,我可以通过命令行访问它。我不确定以…结尾的文件或由…括起的文件或以…结尾的行。。。我需要这些吗?这真的会保存到我的本地机器上吗?我对运行这个脚本感到紧张,我不想犯错误并弄乱数据库。脚本文件的.txt也可以吗

你能提供的任何帮助都会很好

  • 我不确定我是否有正确的语法,或者这是否可能,我已经做了大量的研究,试图得到一些例子

    您的语法是正确的,只是每个
    SELECT
    语句都应该以分号结尾。请注意,您还需要指定表所在的数据库,最简单的方法是将其作为
    mysql
    的参数:

    如下文所述:

    如果不指定任何
    字段
    子句,则默认值与您编写的相同:

    FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' 字段以“\t”结尾并由“\\”转义 以“\n”结尾并以“”开头的行 它接着解释说:

    相反,在写入输出时,默认值会导致如下操作:

    • 在字段之间写入制表符

    • 不要将字段括在任何引用字符内

    • 使用“
      \
      ”转义字段值中出现的选项卡、换行符或“
      \
      ”实例

    • 在行尾写换行符

    请注意,由于默认值为以“\n”结尾的
    ,因此可以省略该子句;但是
    字段
    子句对于CSV输出是必需的

  • 这真的会保存到我的本地机器上吗

    编号如下所述:

    的形式将所选行写入文件。该文件是在服务器主机上创建的,因此您必须具有使用此语法的权限
    file\u name
    不能是现有文件,这样可以防止
    /etc/passwd
    等文件和数据库表被破坏。系统变量控制文件名的解释

    该语句主要用于让您非常快速地将表转储到服务器计算机上的文本文件中。如果要在服务器主机以外的其他主机上创建生成的文件,通常无法使用,因为无法写入文件相对于服务器主机文件系统的路径

    但是,如果MySQL客户端软件安装在远程计算机上,则可以使用客户端命令,例如
    MySQL-e“SELECT…”>file\u name
    在客户端主机上生成文件

    如果可以使用服务器文件系统上的网络映射路径访问远程主机上的文件位置,也可以在服务器主机以外的其他主机上创建生成的文件。在这种情况下,目标主机上不需要存在(或某些其他MySQL客户端程序)

  • 我对运行这个脚本感到紧张,我不想犯错误并弄乱数据库

    SELECT
    语句只从数据库中读取数据,不对其内容进行任何更改:因此它们不能“搞乱数据库”

  • 脚本文件的.txt也可以吗

    任何扩展都可以工作:MySQL客户端和服务器软件都看不到它(您的操作系统读取文件并将其内容发送到客户端程序,客户端程序又将该内容发送到服务器;操作系统与此处的文件扩展名相矛盾)

    在Windows上,扩展名
    .txt
    将文件与文本编辑器(例如记事本)关联,以便随时打开进行编辑。就我个人而言,我更喜欢
    .sql
    ,因为它更准确地描述了文件的内容,然后我会将该扩展名与合适的编辑器关联起来,但这些都不是必需的


  • 查看我在上的博客文章。这可能有助于引导你走上正确的道路。非常感谢eggyal-soo,这是一个非常详细的回答,帮助很大。我仍然不明白如何在我的计算机上获得输出。我的服务器上安装了mysql和phpmyadmin。我需要做什么才能将此脚本的结果保存到我的家庭计算机中,例如%UserProfile%\Desktop?@user1639634:您可以
    选择。。。将文件导出到服务器文件系统上的文件中,然后将该文件复制到桌面。谢谢!我可以使用我制作的FTP脚本从那里复制它。这是一个额外的步骤,但效果很好。谢谢
    SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
      FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY '\n'
      FROM test_table;
    FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
    LINES TERMINATED BY '\n' STARTING BY ''