我有一个奇怪的问题。我使用下面的代码将一堆csv文件导入MySQL数据库。
@ECHO OFF
setlocal enabledelayedexpansion
IF /I "%CD%\" NEQ "%~dp0" PUSHD "%~dp0"
mysql -e "DELETE FROM software_it.hardware" -u root
FOR %%f IN ("*.csv") DO (
set old=%%~dpnxf
set new=!old:\=\\!
mysql -e "load data local infile '"!new!"' into table software_it.hardware COLUMNS TERMINATED BY ',' IGNORE 1 ROWS" -u root
echo %%~nxf DONE
)
首先,csv文件来自CMD输出。 我有一个名为“UserName”的字段,我只是在那个字段中观察到了这个问题。 用户名的格式为:
Trilegal \ {用户名}
现在,首先导入后,“\”丢失,一些名称在“\”之后缺少第一个字符。
由于存在这个“\”,我猜错了。我认为问题出在我的桌子上,因此我使用了GUI导入方式。 GUI方式导入正常。我使用相同的表使用上面的代码导入,同样的问题又回来了。
我是MySQL的新手,所以如果有人能帮助我理解这个问题,那就太好了。
编辑:从“/”
更改为“\”谢谢, SS
答案 0 :(得分:0)
答案是转义字符,默认情况下mySQL会处理" \"作为逃避角色。
在代码中添加一行ESCAPED BY ''
,并且不会使用默认的转义参数。