我正在尝试将一些csv文件导入表格(在phpmyadmin上)。问题是导入不正确(日期没有显示,我的值也是(当类型是VARCHAR时它们正确显示)等等)所以我想在导入期间将我的值转换为正确的类型。当我尝试使用它的日期时,它最终仅使用下面的代码:
SET Date = STR_TO_DATE (@dte, '%m.%d.%Y')
SQL;
但是当我想将我的值转换为浮点数或小数或其他什么时,它就不起作用了。它总是说'语法错误或访问冲突'(我想它从=开始(选择CAST(@tot AS decimal(10,2))等)。
你有什么建议吗? 请求
Select CAST(@tot AS decimal(10,2))
from `bss_154`)
通常适用于mySQL。
提前致谢。
PS:这是我的代码:
$sql=<<<SQL
LOAD DATA INFILE '{$filename}'
IGNORE INTO TABLE nsui.bss_154
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' IGNORE 1 LINES
(@dte, `BSC_Name`, `Segment_Name`, `SEGMENT`, `UP_QUAL`, `UP_LEVEL`,
`DOWN_QUAL`, `DOWN_LEV`, `DISTANCE`, `MSC_INVOC`, `INTFER_UP`,
`INTFER_DWN`, `UMBR`, `PBDGT`, `OMC`, `DIR_RETRY`, `PRE_EMPTION`,
`FIELD_DROP`, `LOW_DISTANCE`, `BAD_CI`, `GOOD_CI`, `HO_DUE_SLOW_MOV_MS`,
`HO_DUE_MS_SLOW_SPEED`, `HO_DUE_MS_HIGH_SPEED`,
`HO_ATT_DUE_SWITCH_CIRC_POOL`, `HO_ATT_DUE_ERFD`,
`HO_ATT_DUE_TO_BSC_CONTR_TRHO`, `HO_ATT_DUE_TO_DADLB`,
`HO_ATT_DUE_TO_GPRS`, `HO_ATT_DUE_TO_HSCSD`, `HO_ATT_DUE_BAD_SUPER_RXLEV`,
`HO_ATT_DUE_GOOD_REGULAR_RXLEV`, `HO_ATT_DUE_DIRECT_ACCESS`,
`HO_ATTEMPT_INTERBAND_DUE_LEVEL`, `HO_ATTEMPT_DUE_TO_ISHO`,
`HO_ATT_DUE_INTERSYS_DIRECT_ACC`, `HO_ATT_FOR_AMR_TO_HR`,
`HO_ATT_FOR_AMR_TO_FR`, `HO_ATT_INTER_BAND_SDCCH`,
`HO_ATT_INTER_BAND_TCH`, `HO_ATT_INTER_BTS_TYPE_SDCCH`,
`HO_ATT_INTER_BTS_TYPE_TCH`, @tot)
SET Date = STR_TO_DATE (@dte, '%m.%d.%Y'),
Hoattempts_outgoing_and_intra-cell = (
Select CAST(@tot AS decimal(10,2))
from `bss_154`)
SQL;
答案 0 :(得分:0)
此外,您可能希望首先在表定义中创建正确的数据类型(VARCHAR),然后导入可以的数据,然后创建另一个脚本,使用正确的FORMAT导入并修复剩余的字段数据和CAST语句语法:
FORMAT(值,格式[,文化])
请参阅:https://msdn.microsoft.com/en-us/library/hh213505.aspx
CAST(表达式AS data_type [(length)])
请参阅:https://msdn.microsoft.com/en-us/library/ms187928.aspx
使用一些代码:
CAST(格式化(@tot,'N','en-us')as varchar)作为SOME_TOTAL