【问题标题】:How do I import the csv file without a garbage character showing up?如何在不显示垃圾字符的情况下导入 csv 文件?
【发布时间】:2020-03-24 13:20:58
【问题描述】:

我正在尝试将我的 csv 文件加载到数据库中。

我的 CSV 文件

我使用了以下代码:

LOAD DATA LOCAL INFILE 'DESKTOP/pet.csv' INTO TABLE pet 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 
(name,owner,species,sex,@birth,death)
set 
birth= str_to_date(@birth,'%d/%m/%Y');

我得到的结果如下图:

结果图片

在这张图片中,在表中的第一条记录之前出现了一些垃圾值。 ----´╗┐蓬松

请告诉我如何确保正确导入数据。

【问题讨论】:

  • 这可能是字节顺序标记吗?输入的是 unicode 文件吗?
  • 我的 CSV 文件 这不是 CSV 文件,这是一些格式化表格的照片。 在表中的第一条记录之前显示一些垃圾值 将您的 CSV 保存为 UTF w/o BOM。或者从 SET 子句中的值中跳过这 3 个字节('EF BB BF' 用于 UTF-8,可能是 2、3 或 4,取决于编码)。

标签: mysql database csv import


【解决方案1】:

文件的前三个字节不是垃圾,它们是 UTF-8 字节顺序标记

0xEF、0xBB、0xBF

如果有人使用 Windows 记事本编辑 .csv 文件并执行另存为并选择编码:“UTF-8 with BOM”,这就是我们所期望的

解决此问题的方法是编辑文件,并删除前三个字节。这三个字节是不必要的。还有其他测试可以非常可靠地识别 UTF-8 编码。

(使用 UTF-16 编码,我们确实需要字节顺序标记来识别字节序。但 UTF-8 没有字节序问题。)

【讨论】:

  • 如果 Oracle 将 BOM 处理程序写入 MySql 中的 LOAD DATA INFILE 肯定会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多