как создать идентификационный идентификатор для массовой загрузки csv-файла в sql Server и cake php?

#php #sql #sql-server #cakephp

#php #sql #sql-сервер #cakephp

Вопрос:

я хочу создать идентификатор для каждой части загружаемого файла, чтобы идентифицировать и убедиться, что каждая часть файла уникальна. мой столбец в таблице RAS_Off_Upload:

 [RAS_Code]
[Value]
[Remark]
[SOF]
[Created_by]
[CLN_No]
[Lot_No]
[Prod]
[Date]
[Time]
[id]
[Line]
[Up_Time]
  

например:
процесс загрузки продолжается каждые 1 час, поэтому мне нужно, чтобы в первом загруженном в пакет файле все строки имели тот же идентификатор, что и 1, затем второй загружаемый в пакет файл будет иметь тот же идентификатор, что и 2 ….. затем продолжайте …. идентификатор увеличивается…

я не уверен, делать ли это на cake php или добавлять запрос на sql server. ценю все комментарии!

Ответ №1:

попробуйте этот подход:

  • Добавьте столбец в таблицу RAS_Off_Upload, например, «BatchLoadID»
  • В конце процесса массовой загрузки запустите это:

(примечание: я предполагаю, что он будет запускаться каждый час и завершаться задолго до часа.)

 DECLARE @LastBatchLoadID INT = (SELECT COALESCE(MAX(BatchLoadID), 1) FROM RAS_Off_Upload);
SET @LastBatchLoadID = @LastBatchLoadID   1;
UPDATE RAS_Off_Upload SET BatchLoadID = @LastBatchLoadID WHERE BatchLoadID IS NULL;
  

Комментарии:

1. спасибо за комментарий! когда я запускаю его на sql server, он показывает неправильный синтаксис рядом с ‘)’. я не уверен, в чем проблема. извините, я новичок в sql server.

2. можете ли вы попробовать еще раз сейчас? В первом операторе у меня была дополнительная скобка.

3. Это работает успешно! Большое вам спасибо за помощь! я хочу спросить, нужно ли мне хранить в хранимой процедуре, чтобы сохранить ее для частого запуска? или создать задание по расписанию?

4. Да, вы могли бы обернуть его в SP. Я бы запустил его точно после завершения задачи пакетной загрузки.

5. Спасибо! я столкнулся с другой проблемой: когда я дважды загружаю файл, запрос не распознает пакет файла. например, если 1 файл содержит 7 строк данных, то, если я продолжу загружать 9 файлов, он покажет 63 строки с BatchLoadID 1. у меня есть 9 строк, выполняющих процесс, так что это означает, что каждый час в базе данных будет загружаться 9 файлов. как я могу решить эту проблему?