【问题标题】:Loading CSV into CloudSQL将 CSV 加载到 CloudSQL
【发布时间】:2019-06-28 17:51:27
【问题描述】:

我有一个 Powershell 脚本,它当前将一些数据从 CSV 加载到位于本地 Linux 机器上的 MySQL 5.1.73 服务器中(效果很好)。我正在编辑此代码,现在将数据加载到 Google CloudSQL 5.7.14 数据库中。

我在 CloudSQL 数据库实例上启用了“local_infile on”标志,当我尝试运行代码时出现错误:

 Exception calling "Fill" with "2" argument(s): "The used command is not allowed with this MySQL version"

当我使用以下语法 SSH 到 CloudSQL 实例时:

mysql --local-infile=1 -u root -h XX.XX.XX.XX -p

并尝试加载 CSV 一切正常。如果我不使用:

--local-infile=1

flag 我会收到类似的错误。

我的问题是,如果可能的话,如何从 Powershell 启动连接以基本上包含相同的“--local-infile=1”标志?

我当前的连接字符串如下所示:

 $constring="server=XX.XX.XX.XX;uid=USERNAME;pwd=PASSWORD;database=DATABASE;Pooling=False;"

过去几个小时我一直在网上搜索并尝试了一些标志以试图猜测它,但我失败了。

感谢您的帮助。

【问题讨论】:

    标签: mysql powershell google-cloud-sql


    【解决方案1】:

    您想将 CSV 文件加载到您的 Cloud SQL (MySQL) 实例中,有多种方法可以做到这一点,请参阅documentation 以评估哪种方法更适合您的情况。

    如果您的 CSV 不符合格式要求,我在这种情况下推断您使用“LOAD DATA LOCAL INFILE”语句。

    根据 Mysql documentation,当“在服务器或客户端禁用本地功能”时,您会收到“此 MySQL 版本不允许使用的命令”错误(位于页面末尾)。

    确认您发现了什么,您需要在客户端启用该标志。我四处搜索,但没有找到在 PowerShell 连接方法上指定标志的直接方法。你能试试这些替代品吗?:

    1. 在 my.cnf 或系统上的 MySQL 配置文件上设置“local-infile=1”(如果您使用的是 Linux,它应该在 /etc/mysql/my.cnf 附近)

    2. 使用 Python3 脚本而不是 PowerShell,Python Mysql connector 确实允许“allow_local_infile”标志。

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 2013-10-06
      • 2021-09-17
      • 2016-06-07
      • 2021-11-22
      相关资源
      最近更新 更多