Задать вопрос

Как провильно передать CommandText?

Доброго времени суток. Немогу разобраться с синтаксисом запросса на импорт в базы данных.

База данных MySql установленна локально. Если я произвожу все действия руками все работает.

Проблемма в кавычках, Powershell ругается что не все ковычки и апострофы закрыты.

Выражение MySql

LOAD DATA LOCAL INFILE '"$Путь к файлу"' INTO TABLE `bga` FIELDS ENCLOSED BY '"' TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;


Код программы:

[void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")
$dir = 'C:\Temp\1'
$dir2 = 'C:\Temp\2'
$dbusername = 'root' 
$dbpassword = '123456' 
$dbname = 'curamed' 
$MySQLHost = 'localhost'


$connStr ="server=localhost;database=" + $dbname + ";Persist Security Info=false;user id=" + $dbusername + ";pwd=" + $dbpassword + ";"
$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
$conn.Open()


foreach ($i in ls -name $dir\*.csv)
{
	Write-Host "$i"
	$file_content = Get-Content "$dir\$i";
	[System.IO.File]::WriteAllLines("$dir2\$i", $file_content);
	Remove-Item "$dir\$i"
	conn.CommandText = "LOAD DATA LOCAL INFILE '"$dir2\$i"' INTO TABLE `bga` FIELDS ENCLOSED BY '"' TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
	$conn.ExecuteNonQuery()
}

$conn.Close()


За другие элегантные решения моей проблеммы буду благодарен.

Знания Powershell поверхностные...

Код ошибки правда на немецком.

Die Zeichenfolge hat kein Abschlusszeichen: '.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
  • Вопрос задан
  • 152 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
а так?
conn.CommandText = "LOAD DATA LOCAL INFILE '$dir2\$i' INTO TABLE `bga` FIELDS ENCLOSED BY '`"' TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;"

да, а нужны ли обратные кавычки вокруг bga?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы