【问题标题】:MySQL csv import is truncating charectersMySQL csv 导入正在截断字符
【发布时间】:2017-03-24 04:38:10
【问题描述】:

我有一个奇怪的问题。我正在使用下面的代码将一堆 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 输出。 我有一个名为“用户名”的字段,我只在该字段中观察到了这个问题,非常明显。 用户名格式为:

Trilegal\{用户名}

现在,首先在导入之后,缺少“\”,并且一些名称在“\”之后缺少第一个字符。

由于这个“\”的存在,我猜想出了点问题。我认为问题出在我的表上,因此我使用了 GUI 导入方式。 GUI方式导入良好。我使用上面的代码使用同一张表导入,同样的问题又回来了。

我是 MySQL 的新手,所以如果有人能帮助我理解这个问题,那就太好了。

编辑:从“/”改为“\”

谢谢, SS。

【问题讨论】:

  • CSV 文件中的/ 没有什么特别之处。确保文件中没有多余的逗号。
  • 你确定吗?因为当我在同一个表中使用 GUI 导入 .csv 文件时,它导入得很好。上面的代码是导致问题的原因。其实我错了,我会编辑它。它是“\”而不是“/”。所以我猜像 \b 或 \r 这样的词正在做出一些改变。
  • 那个错字可能是我昨晚没有得到答案的原因。

标签: mysql csv import


【解决方案1】:

答案是转义字符,默认情况下mySQL将“\”视为转义字符。

在你的代码中添加一行ESCAPED BY '',它不会使用默认的转义参数。

P.S:是的,我知道我在回答自己。经过一番阅读,得出了这个答案。 :D

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2018-07-01
    • 2018-10-07
    • 2015-08-03
    • 2012-01-26
    • 2021-12-22
    • 2015-11-26
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多