LOAD DATA LOCAL INFILE을 실행하는 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 텍스트를 실행하면(탈출 문자 제외) 문제없이 작동합니다.사용자와 직접 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 `device`= @col2, `nsn` = @col5, `hostname` = @col3, `errorsince` = @col4, `screenid` = @col1, `status` = @col7, `opstate` = @col6, `statusmsg` = @col8;
내가 여기서 뭘 잘못하고 있는지 아는 사람?
이에 대한 답은 전혀 제 코드가 아니라 제가 수입하는 데이터라는 것입니다.내 CSV의 첫번째 줄에 오류를 발생시킨 null 값이 있습니다.
이 게시물을 보고 있는데 누군가가 나중에 사용할 수 있는 SQL 명령어를 제공하는 것으로 HeidiSQL에 대해 약간의 글을 올린 것을 확인했습니다.그것은 문제를 지적하는 오류를 매우 유용하게 보여주었습니다.
MySQL Workbench를 사용해 보았지만 HeidiSQL과 같은 오류 피드백을 제공하지 않았습니다.
언급URL : https://stackoverflow.com/questions/49909278/error-in-powershell-running-load-data-local-infile
'programing' 카테고리의 다른 글
드라이버와 프로바이더의 차이 (0) | 2023.09.21 |
---|---|
jQuery validation을 "selected" 플러그인과 함께 사용하려면 어떻게 해야 합니까? (0) | 2023.09.21 |
Google Chrome 북마크 기능 (0) | 2023.09.21 |
JSON_OBJECT 값으로 mysql 결과 주문 (0) | 2023.09.21 |
CSS selector - 주어진 자식이 있는 요소 (0) | 2023.09.21 |