У меня есть процедура импорта данных, которая принимает файлы CSV, первый столбец которой содержит набор символов, состоящий из значений ID в формате 0123, 0517, 1531 и т. Д. Обычно 4 цифры с начальным нулем на 3-значном номере.MySQL LOAD DATA удаляет ведущие нули в поле varchar
Данные загружаются в таблицу с использованием поля 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-файле установлен ноль? и почему вы используете varchar255, если вы собираетесь хранить 4-значное число? –
Да, я дважды проверил это. Я вижу нуль, если я открою CSV в Блокноте. И это всего лишь временная таблица, в которой я затем работаю, чтобы объединиться с моими основными таблицами, поэтому для простоты я делаю все столбцы одинаковыми. –