如何让mysql忽略名称中的特殊字符

时间:2015-09-01 11:34:02

标签: php mysql

我正在尝试将名称的CSV批量导入到MYSQL中,但在此过程中会有一个特殊字符会停止操作。

名字上的人物 - 佩雷斯

有没有办法让MYSQL在上传时忽略它? 我的下一步是通过网页自动上传,客户可以上传CSV文件并点击提交,因此希望能解决这些问题。

我接受了面板的建议,并将我的表重新创建为UTF8-Default。

错误1366:字符串值不正确:第1行第'acct_owner'列的'\ xE9rez' SQL语句:

我尝试了这个并且我仍然在该特殊字符上得到相同的错误,加上现在由于某种原因我的自动增量列没有增加,它只是从last_update列捕获数据,因此一切都向左移动。

2 个答案:

答案 0 :(得分:0)

如果您想要insert/load具有特殊字符的csv数据,您可以尝试这样做

LOAD DATA INFILE 'file.csv'
IGNORE INTO TABLE table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

答案 1 :(得分:0)

为了解决这个问题,我最终重建了我的数据库表,然后我继续提交我的数据,然后通过它循环使用一些代码来删除我知道导致我出现问题的字符。虽然可能不是最好的方式,但它确实是我找到的最简单的方法。我最初有一个循环,删除任何不是标准的A-Z或0-9的字符,但我发现这导致了我需要看到的其他问题;和\和甚至/我的一些细节。因此,我只关注我所知道的打破MYSQL的导入。

以下是我使用的代码片段:

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

//Replace all the special characters to avoid any insert errors
$data = preg_replace('/\'/', '', $data);
$data = preg_replace('/é/', 'e', $data);

if($firstRow) { $firstRow = false; }
else {

    $import="INSERT INTO ..... blah blah blah....