mysql加载数据csv utf8字符未读取,powershell csv export

时间:2014-09-16 08:11:34

标签: mysql powershell import export-to-csv

在powershell脚本上,我在MS Access DB上执行查询并将结果导出到csv文件:

    $connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= $mdb"
    $command = $connection.CreateCommand()
    $command.CommandText = $q
    $adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
    $dataset = New-Object -TypeName System.Data.DataSet
    $nb = $adapter.Fill($dataset)

    if ( $nb -lt 1 ){ 
        write-host"empty result !" 
        "empty" | Out-File -Encoding "UTF8" $exportxt
    }
    else { 
        write-host "$nb results !"
        $dataset.Tables[0] | export-csv $exportxt -NoTypeInformation -Delimiter ";" -Encoding "UTF8"
    }
    $connection.Close()

当我在notepad ++中打开此文件时,它会在utf8中正确显示所有字符(我的数据库中有法语单词)。

然后我将此csv上传到服务器并执行一个php页面,使用此查询将其导入mysql数据库: LOAD DATA LOCAL INFILE '$f' INTO TABLE mytable FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES; 所有表都在utf8_unicode_ci中,但utf8字符格式不正确(Ã'而不是ô)。

在我的php脚本结束时,我通过电子邮件发送附带csv文件的确认信息,当我收到它时,thunderbird也没有显示字符,但是如果我在notepad ++中打开csv文件,一切都没问题。

似乎CSV文件格式不合适或类似的东西,你怎么看?我错过了ps脚本中export-csv cmdlet的一个选项?

谢谢:)

1 个答案:

答案 0 :(得分:0)

我通过在mysql查询中指定utf8字符集解决了这个问题: LOAD DATA LOCAL INFILE '$f' INTO TABLE article_temporaire_txt CHARACTER SET UTF8 FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES

但是为什么thunderbird不能识别文件的UTF8编码?