gpt4 book ai didi

mysql - Powershell 运行 LOAD DATA LOCAL INFILE 时出错

转载 作者:行者123 更新时间:2023-11-30 21:44:56 24 4
gpt4 key购买 nike

我在 Powershell 中使用以下函数尝试将我的 SQL 服务器上的文件加载到现有表中:

Function MySQL-nonQuery($server, $user, $pass, $database, $sql){
try{ #set up My SQL connection
[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$connectionString = "server=" + $server + ";port=3306;uid=" + $user + ";pwd=" + $pass + ";database="+$database + ";AllowUserVariables=True"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = $ConnectionString
$connection.Open()
}
catch{
$Error[0]
}
#set up command
$updateCOD = New-Object MySql.Data.MySqlClient.MySqlCommand($sql, $connection)
$updateCOD.CommandText
$updateCOD.ExecuteNonQuery()
$connection.Close()

}

这是我的命令执行:

$sql = "LOAD DATA LOCAL INFILE '/var/lib/phpMyAdmin/upload/MyCSVfile.csv' INTO TABLE MySQLTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col1,@col2,@col3,@col4,@col5,@col6,@col7,@col8) SET ``field1``= @col2, ``field2`` = @col5, ``field3`` = @col3, ``field4`` = @col4, ``field5`` = @col1, ``field6`` = @col7, ``field7`` = @col6, ``field8`` = @col8;"
MySQL-nonQuery "server" "user" "password!" "database" $sql

最后,我得到的错误:

Exception calling "ExecuteNonQuery" with "0" argument(s): "Fatal error encountered during command execution."
At C:\FILEPATH\DBupdate.ps1:78 char:5
+ $updateCOD.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : MySqlException

我想我已经通过尝试研究尽可能多地解决了这个问题。

当我在我的服务器上运行 SQL 文本(减去转义字符)时,它可以正常工作。甚至使用我通过 Powershell 脚本发送的用户 ID 和密码直接登录到 SQL 服务器。

.CommandText 显示发送的文本看起来合适(如下):

LOAD DATA LOCAL INFILE '/var/lib/phpMyAdmin/upload/MyCSVfile.csv' INTO TABLE MySQLTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col1,@col2,@col3,@col4,@col5,@col6,@col7,@col8) SET `device`= @col2, `nsn` = @col5, `hostname` = @col3, `errorsince` = @col4, `screenid` = @col1, `status` = @col7, `opstate` = @col6, `statusmsg` = @col8;

有人知道我在这里做错了什么吗?

最佳答案

答案是它根本不是我的代码,而是我正在导入的数据。我的 CSV 中的第一行包含导致错误的空值。

我在看 this post当我注意到有人发布了一些关于 HeidiSQL 的信息时提供以后可以使用的 SQL 命令。它非常有用地显示了挑出问题的错误。

我试过 MySQL Workbench,但它没有像 HeidiSQL 那样提供任何错误反馈。

关于mysql - Powershell 运行 LOAD DATA LOCAL INFILE 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com