В рамках попытки автоматизировать некоторые из моих данных, в отличие от ежедневного запуска их вручную, я создал файл * .bat, который выполняет сценарий PHP. Скрипт работает отлично, однако по какой-то причине, и я не уверен, почему в результирующем CSV-файле есть интервалы неправильных разрывов строк.
Когда я использовал для запуска сценария вручную на MySQL Workbench, экспорт работал правильно без разрывов строк.
Я включил в качестве примера скриншот текущего (автоматизированного) результата, строки, выделенные красным цветом, были неправильно «Line Broken».
Мой Код Outfile:
$sql11 = ("SELECT
'STORE_CODE'
, 'OUTLET_NAME'
, 'CALL_CYCLE_DAY'
, 'RSM_DETAILS'
, 'ASM_DETAILS'
, 'FM_DETAILS'
, 'BSS_DETAILS'
, 'MEGA_REGION'
, 'REGION'
, 'SUB_REGION'
, 'MICRO_REGION'
, 'SEGMENT'
, 'BRAND'
, 'AVAILABILITY'
UNION ALL
SELECT
store_code
, outlet_name
, call_cycle_day
, CONCAT(rsm_number, ' | ' ,rsm_name)
, CONCAT(asm_number, ' | ' ,asm_name)
, CONCAT(fm_number, ' | ' ,fm_name)
, CONCAT(bss_number, ' | ' ,bss_name)
, mega_region
, region
, sub_region
, micro_region
, segment
, brand
, availability
FROM
metrics.availabilty
INTO
OUTFILE 'E:/Data/exports/DailyExports/Availability_".date('Ymd').".csv'
FIELDS
TERMINATED BY ','
LINES
TERMINATED BY '\n'
");
Я также попробовал это, не используя поля CONCAT, а также говоря TERMINATED BY '\r\n'
но имеют такой же вывод на файл. Как упоминалось ранее в посте, при запуске напрямую / вручную в MySQL Workbench файл также экспортируется правильно.
Некоторая дополнительная информация заключается в том, что индикаторы «SKU Available» / «SKU Not Available» создаются с использованием оператора CASE. И хотя это не видно на снимке экрана, разрыв строки происходит в обоих полях.
Задача ещё не решена.
Других решений пока нет …