Я хочу динамически экспортировать файлы CSV с заголовками из mySQL.Я попробовал ответ shadow0359: MySQL: динамически экспортировать CSV-файл с заголовками , но его решение, я считаю, экспортирует заголовок внизу записей, а не сверху.Кто-нибудь знает, как динамически экспортировать файлы CSV из mySQL с верхними заголовками?
Мой код (сценарии для создания):
Хранимая процедура
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_test`(in_Accountid
varchar(30))
BEGIN
SET @default_group_concat_max_len = (SELECT @@group_concat_max_len);
SET SESSION group_concat_max_len = 1000000;
SET @FilePath:='C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/';
SET @FileName:=CONCAT(in_AccountID,'_',DATE_FORMAT(NOW(),'%Y-%m-
%d'),'.xls');
SET @FullFilePath:=CONCAT(@FilePath,@FileName);
SET @TableName:='temp_transactionslines';
SET @TableSchema:='melhor_metade_2016';
SET @SQL = ( select CONCAT('SELECT
TransactionID
,RecordID
,AccountID
,AccountDescription
,SourceDocumentID
,SystemEntryDate
,Description
,DebitAmount
,CreditAmount
,Period
,TransactionDate
,CustomerTaxID
,CustomerID
INTO OUTFILE \''
, @FullFilePath, '\'
FROM (SELECT '
,group_concat(CONCAT("'", COLUMN_NAME,"'"))
,' UNION ALL SELECT * FROM
temp_transactionslines order by TransactionID ASC) as tmp')
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
AND TABLE_SCHEMA = @TableSchema
order BY ORDINAL_POSITION );
SET SESSION group_concat_max_len = @default_group_concat_max_len;
PREPARE dynamic_statement FROM @SQL;
EXECUTE dynamic_statement;
DEALLOCATE PREPARE dynamic_statement;
END$$
DELIMITER ;
Таблица
CREATE TABLE `temp_transactionslines` (
`TransactionID` varchar(70) NOT NULL,
`RecordID` varchar(30) NOT NULL,
`AccountID` varchar(30) DEFAULT NULL,
`AccountDescription` varchar(100) DEFAULT NULL,
`SourceDocumentID` varchar(60) DEFAULT NULL,
`SystemEntryDate` varchar(19) DEFAULT NULL,
`Description` varchar(200) DEFAULT NULL,
`DebitAmount` float(13,2) DEFAULT NULL,
`CreditAmount` float(13,2) DEFAULT NULL,
`Period` int(2) DEFAULT NULL,
`TransactionDate` varchar(19) DEFAULT NULL,
`CustomerTaxID` varchar(20) DEFAULT NULL,
`CustomerID` varchar(30) DEFAULT NULL,
`SupplierID` varchar(30) DEFAULT NULL,
KEY `i_accountID` (`AccountID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Данные
INSERT INTO `melhor_metade_2016`.`temp_transactionslines`
(`TransactionID`,
`RecordID`,
`AccountID`,
`AccountDescription`,
`SourceDocumentID`,
`SystemEntryDate`,
`Description`,
`DebitAmount`,
`CreditAmount`,
`Period`,
`TransactionDate`,
`CustomerTaxID`,
`CustomerID`,
`SupplierID`)
VALUES
('a','b',3,4,5,2, 1, 1,null,3,1,2,3,4);