【问题标题】:MySQL LOAD DATA is removing leading zeros in varchar fieldMySQL LOAD DATA 正在删除 varchar 字段中的前导零
【发布时间】:2013-02-18 19:00:02
【问题描述】:

我有一个数据导入例程,它接受 CSV 文件,其中的第一列包含一个字符数据集,该数据集由 0123、0517、1531 等格式的 ID 值组成。通常是 4 位数字,前导零在 3数字号码。

正在使用 varchar(255) 字段将数据加载到表中,但是当我调用 LOAD DATA 命令时,它全部被导入而没有前导零。我这里有什么遗漏吗?

db_query('CREATE TABLE feed_buildings (
  BLDGID varchar(255),
  BLDGNAME varchar(255),
  CITY varchar(255),
  STATE varchar(255),
  ZIPCODE varchar(255),
  LLRDID varchar(255),
  BLDGGLA varchar(255),
  ADDRESS1 varchar(255),
  ADDRESS2 varchar(255),
  NMBRUNIT varchar(255),
  MNGRID varchar(255),
  INACTIVE varchar(255),
  OCCGLA varchar(255) )', false, false);

在本例中,当我运行以下命令时,丢失前导零的是 BLDGID 字段:

$loadfields = ' ( BLDGID, BLDGNAME, CITY, STATE, ZIPCODE, LLRDID, @ignore, BLDGGLA, @ignore, ADDRESS1, 
  ADDRESS2, @ignore, @ignore, NMBRUNIT, MNGRID, @ignore, @ignore, @ignore, @ignore, @ignore, 
  @ignore, @ignore, @ignore, @ignore, @ignore, @ignore, @ignore, @ignore, INACTIVE, @ignore, 
  @ignore, @ignore, @ignore, @ignore, @ignore, OCCGLA )';

$loadquery = 'LOAD DATA LOCAL INFILE \'' . $path . '\' INTO TABLE feed_buildings . ' FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\' IGNORE 1 LINES';
db_query_unprepared($loadquery . $loadfields);

提前感谢您的帮助!

【问题讨论】:

  • 您确定您的 csv 文件中有零吗?如果要存储 4 位数字,为什么要使用 varchar255?
  • 是的,我仔细检查过。如果我在记事本中打开 CSV,我会看到零。这只是一个临时表,然后我对它进行操作以与我的主表合并,所以为了简单起见,我将所有列都设置为相同。

标签: php mysql csv


【解决方案1】:

忽略 -- 我不确定前几次是如何发生的,但最后几次导入正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多