我正在尝试将名称的CSV批量导入到MYSQL中,但在此过程中会有一个特殊字符会停止操作。
名字上的人物 - 佩雷斯
有没有办法让MYSQL在上传时忽略它? 我的下一步是通过网页自动上传,客户可以上传CSV文件并点击提交,因此希望能解决这些问题。
我接受了面板的建议,并将我的表重新创建为UTF8-Default。
错误1366:字符串值不正确:第1行第'acct_owner'列的'\ xE9rez' SQL语句:
我尝试了这个并且我仍然在该特殊字符上得到相同的错误,加上现在由于某种原因我的自动增量列没有增加,它只是从last_update列捕获数据,因此一切都向左移动。
答案 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....