带有前导零的 mysql outfile 列

标签 mysql csv into-outfile

我正在尝试将数据导出到一个 csv 文件中,但我的前导零被截断了......我无法在数据被拉出后修改它,所以 LPAD 不是一个选项。此外,ID 不是固定长度......它可以是 6 个字符长,或最多 11 个。它也可能有字母(在这种情况下,csv 将这些值显示为字符串。无论如何,前导零的字段有数据库中的前导零并存储为 varchar。我需要提取这些值并将它们显示在带有零的 csv 中:

SELECT
    'ID',
    'Par 1',
    'Par 2'
UNION
(SELECT
    result.id as 'ID',      
    COALESCE(sum(if(result.parameter = '10001', result.result, NULL)),'-') as 'Par 1',
    COALESCE(sum(if(result.parameter = '10002', result.result, NULL)),'-') as 'Par 2'
    INTO OUTFILE '/tmp/file.csv' FIELDS TERMINATED BY ','  ENCLOSED BY '\"' 
FROM (
    SELECT
        event.id,
        resultset.parameter_cd,
        resultset.result
    FROM event
    Inner Join resultset ON resultset.id = event.id
    ) as result
group by result.id
order by
    result.id ASC )

在这种情况下,'id' 可能有前导零...mysql 的结果集显示了它们,但是在导出的 csv 中它们被完全去除了????

最佳答案

作为变通方法,用双引号将 id 括起来,并将 括起来,因为数字字段不需要它们

(SELECT
    concat ('\"', result.id, '\"') as 'ID',
    COALESCE(sum(if(result.parameter = '10001', result.result, NULL)),'-') as 'Par 1',
    COALESCE(sum(if(result.parameter = '10002', result.result, NULL)),'-') as 'Par 2'
    INTO OUTFILE '/tmp/file.csv' FIELDS TERMINATED BY ','    

关于带有前导零的 mysql outfile 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12959242/

相关文章:

php - 使用连接库时如何在 codeigniter 上创建别名

php - 将脚本从 PHP 5.6 移至 PHP 7

java - 解析 SELECT INTO OUTFILE 的输出

php - 通过 CSV 文件添加数据时出错

php - 使用 PHPExcel lib 导入带制表符分隔的 CSV 文件

mysql - select * into outfile 即使对于 root 也不起作用

mysql - 显示数据库/表 INTO OUTFILE

mysql - 如何从值不是...的 mysql 表中进行选择?

php - 在多个值中搜索始终返回 1 个结果

mysql - 在 MySQL 中对另一个子查询的结果执行子查询?