我有一个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
标志,我也会收到类似的错误。
我的问题是,如果可能的话,如何启动从Powershell进行的连接,使其实质上包含相同的'--local-infile = 1'标志?
我当前的连接字符串如下:
$constring="server=XX.XX.XX.XX;uid=USERNAME;pwd=PASSWORD;database=DATABASE;Pooling=False;"
在过去的几个小时中,我一直在互联网上进行搜索,并尝试了一些尝试来猜测它,但失败了。
感谢您的帮助。
答案 0 :(得分:1)
您要将CSV文件加载到Cloud SQL(MySQL)实例中,有几种方法,请参考documentation来评估哪种方法更适合您的情况。
在这种情况下,如果您的CSV不符合格式要求,则我推断您使用“ LOAD DATA LOCAL INFILE”语句。
根据Mysql documentation,当“在服务器或客户端上都禁用了本地功能”(位于末尾)时,您将收到“此MySQL版本不允许使用的命令”错误。页面)。
确认已发现的内容后,需要在客户端上启用该标志。我到处搜索,但找不到在PowerShell连接方法上指定标志的直接方法。您可以尝试这些替代方法吗?:
在my.cnf或系统上的MySQL配置文件中设置“ local-infile = 1”(如果使用Linux,则应在/etc/mysql/my.cnf左右)
< / li>使用Python3脚本而不是PowerShell,Python Mysql connector确实允许“ allow_local_infile”标志。