- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
概述:
我的网站上有一个模块,允许用户导入 .txt 文件(数据用分号分隔并用换行符转义),然后我抓取该文件并执行 LOAD DATA LOCAL INFILE
,以插入数据库。该脚本有效,但未达到预期效果。可能的兴趣点:
UTF-16LE
utf8
,InnoDB引擎。问题:
只有当数据库上的所有列都设置为 VARCHAR
时,脚本才会插入正确的数据。如果我尝试将包含数字的内容更改为 INT
,脚本会在数据应在的位置插入 0(零)。
调试尝试:
已尝试在脚本中插入随机硬编码数据,它确实有效。这让我相信问题出在文件编码上。
我尝试过操纵文本文件的编码,但这似乎没有帮助。
还尝试将文件转换为 .csv、.xlsx(使用 PhpSpreadsheet
的不同脚本),但产生相同的结果。
代码:
PHP:
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "databse";
$file = str_replace("\\", "\\\\", $_FILES["polizas"]["tmp_name"]);
if (is_uploaded_file($_FILES["polizas"]["tmp_name"])) {
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password, array(PDO::MYSQL_ATTR_LOCAL_INFILE => true));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$status = $pdo->exec(
"LOAD DATA LOCAL INFILE '" . $file . "'
IGNORE
INTO TABLE `polizas`
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(`seccion`, `propuesta`, `poliza`, `endoso`, `tipo_endoso`, `desc_tipo_endoso`, `pol_que_renueva`, `iva_cond`, `tipo_doc`, `nro_doc`, `apellido`, `domicilio`, `cod_postal`, `telefono`, `localidad`, `provincia`, `fecha_emision`, `fecha_inicio`, `fecha_vcto`, `canal_pago`, `desc_canal_pago`, `origen`, `productor`, `organizador`, `moneda`, `item`, `marca`, `modelo`, `cero_Km`, `motor`, `chasis`, `patente`, `tipo_carroceria`, `desc_tipo_carroceria`, `cobertura`, `desc_cobertura`, `cod_acc1`, `desc_acc1`, `valor_acc1`, `cod_acc2`, `desc_acc2`, `valor_acc2`, `cod_acc3`, `desc_acc3`, `valor_acc3`, `cod_acc4`, `desc_acc4`, `valor_acc4`, `suma_aseg`, `prima`, `recarg`, `der_emision`, `sellos`, `imp_tasas`, `otros`, `bonif`, `iva`, `adminis_financ`, `premio`, `cant_cuotas`, `ajuste`, `tipo_vehiculo`, `desc_tipo_vehiculo`, `codigo_uso`, `descripcion_uso`, `ano_fab`, `nro_prestamo`, `vcto_cuota1`, `vcto_prestamo`, `tipo_prestamo`, `tipo_operacion`, `seccion_pol_paquete`, `poliza_pol_paquete`)"
);
} catch (PDOException $e) {
echo $e->getMessage();
}
}
文本文件示例:
seccion;propuesta;poliza;endoso;tipo endoso;desc tipo endoso;pol que renueva;iva;tipo doc;nro doc;apellido;domicilio;cod postal;telefono;localidad;provincia;fecha emision;fecha inicio;fecha vcto;canal pago;desc canal pago;origen;productor;organizador;moneda;item;marca;modelo;cero Km;motor;chasis;patente;tipo carroceria;desc tipo carroceria;cobertura;desc cobertura;cod acc1;desc acc1;valor acc1;cod acc2;desc acc2;valor acc2;cod acc3;desc acc3;valor acc3;cod acc4;desc acc4;valor acc4;suma aseg;prima;recarg;der emision;sellos;imp tasas;otrod;bonif;iva;adminis financ;premio;cant cuotas;ajuste;tipo vehiculo;desc tipo vehiculo;codigo uso;descripcion uso;año fab;nro prestamo;vcto cuota1;vcto prestamo;tipo prestamo;tipo operacion;seccion pol.paquete; poliza pol.paquete;
4;0;894606;707641;65;Anul a Prorrata;0000000;IN;DNI;25035153;BLANCO ALEJANDRO DANIEL;B JARDIN MZA F CASA 9;05570;;SAN MARTIN;13;01/11/2018;27/09/2018;03/11/2018;08;Cobranza Normal;DC;0052000001;00520;0;;;;;;;;;;;;;;;;;;;;;;;;-0,00;-1082,25;-0,00;-0,00;-0,00;-25,40;-17,32;-0,00;-242,42;-72,12;-1439,51;1;;0;NO DEFINIDO;0;NO DEFINIDO;0000;;;;;2;;;
4;2874759;945239;3;29;Refacturacion;0000000;CF;DNI;35210070;GENEM KEVIN DANILO;UNION 00;05596;263154279978;SANTA ROSA;13;01/11/2018;01/11/2018;01/12/2018;04;SO-Sobre;WEB;0012900077;00129;0;1;12340;CHEVROLET CORSA 1.4 4 P GL L/09 (CLASSIC);N;T85032983;8AGSB19Y0AR169362;IRW910;1;SEDAN;C2;R.C. C/LTE. PERD.TOTAL X ACC. Y TOT.Y PARC X INC Y/O ROBO O HURTO;0;;0,00;0;;0,00;0;;0,00;0;;0,00;134000,00;524,11;0,00;0,00;8,33;12,22;0,00;0,00;116,65;31,36;692,67;1;20,00;1;AUTOMOVIL;101;AUTOS Y JEEPS NACIONALES O ASIMILAD;2010;;;;;1;;;
4;0;1001592;0;1;Poliza Nueva;0000000;CF;DNI;23649998;SILVA FELIX ALBERTO;CALLE LOS CHARABONES SN MONTEC;05570;263154320848;GENERAL SAN MAR;13;01/11/2018;01/11/2018;01/12/2018;08;Cobranza Normal;DC;0012900094;00129;0;1;17148;FIAT UNO S 1.4 3 PTAS (PREMIO);N;159A20388401620;8AP146000V841944;BQF655;1;SEDAN;A0;RESPONSABILIDAD CIVIL SOLAMENTE;0;;0,00;0;;0,00;0;;0,00;0;;0,00;0,00;365,94;0,00;0,00;5,78;8,48;0,00;0,00;80,98;19,66;480,84;1;0,00;1;AUTOMOVIL;204;AUTOS Y JEEPS NACIONALES GRUPO "B";1997;;;;;1;;;
4;2700189;904933;5;29;Refacturacion;0000000;CF;DNI;16330735;BOER CARLOS EDGARDO;SOLER 116;05570;;SAN MARTIN;13;01/11/2018;01/11/2018;01/12/2018;07;PF-Pago Facil;WEB;0012900005;00129;0;1;36167;RENAULT R 19 RE 4 PTAS AA;N;AB32015;841L53;BSB411;1;SEDAN;A0;RESPONSABILIDAD CIVIL SOLAMENTE;0;;0,00;0;;0,00;0;;0,00;0;;0,00;0,00;357,59;0,00;0,00;5,65;8,28;0,00;0,00;79,07;18,91;469,50;1;0,00;1;AUTOMOVIL;101;AUTOS Y JEEPS NACIONALES O ASIMILAD;1998;;;;;1;;;
4;0;1001622;0;1;Poliza Nueva;0000000;CF;DNI;33438471;MARRELLO DANIEL ALEXANDER;BOLIVIA 864 V*DEL CARMEN;05400;;SAN JUAN;18;01/11/2018;01/11/2018;01/05/2019;08;Cobranza Normal;DC;0065600001;00656;0;1;36327;RENAULT MEGANE F/2 RT 5 P.;N;AC39650;8A1BA0N25XL000059;COJ834;1;SEDAN;A0;RESPONSABILIDAD CIVIL SOLAMENTE;0;;0,00;0;;0,00;0;;0,00;0;;0,00;0,00;2176,88;0,00;0,00;70,00;50,46;0,00;0,00;481,63;116,60;2895,57;6;0,00;1;AUTOMOVIL;101;AUTOS Y JEEPS NACIONALES O ASIMILAD;1999;;;;;1;;;
4;0;1001702;0;2;Renovacion;0888568;CF;DNI;16076990;CHUMACERO ROBERTO;B LIBERTAD MF C6;05509;;UGARTECHE;13;01/11/2018;07/11/2018;07/12/2018;08;Cobranza Normal;DC;0045700007;00457;0;1;75055;MERCEDES BENZ C L 1620-45 M96;N;377983I04II688;9BM695016WB188117;DCQ882;35;*;A0;RESPONSABILIDAD CIVIL SOLAMENTE;0;;0,00;0;;0,00;0;;0,00;0;;0,00;0,00;614,99;0,00;0,00;9,80;14,37;0,00;0,00;137,14;38,08;814,38;1;0,00;6;CAMION;6132;CAMIONES HASTA 10 TON LIMITE REGION;1999;;;;;1;;;
4;3029886;985020;1;29;Refacturacion;0000000;CF;DNI;8456054;ROMERO VICTOR RAMON;BARRIO AMIGORENA SECTOR UNO 11;05539;2614470347;LAS HERAS;13;01/11/2018;01/11/2018;01/12/2018;;;WEB;0045700001;00457;0;1;12053;CHEVROLET CORSA 1.6 3 P GL AA DH (CLASSIC);N;B16NE31045708;9BGSE08NVTC606100;BBM021;1;SEDAN;B0;RESP.CIVIL ROBO,HURTO E INCENDIO TOTAL-DAÑO TOTAL POR ACCIDENTE;25;EQUIPO DE GNC ;6000,00;0;;0,00;0;;0,00;0;;0,00;120450,00;444,65;0,00;0,00;7,05;10,34;0,00;0,00;98,73;25,48;586,25;1;20,00;1;AUTOMOVIL;101;AUTOS Y JEEPS NACIONALES O ASIMILAD;1997;;;;;1;;;
4;2797244;926680;4;29;Refacturacion;0000000;CF;DNI;6717389;LLANOS JOSE ESTEBAN;HILARIO CUADROS S/N;05533;;LAVALLE;13;01/11/2018;01/11/2018;01/12/2018;07;PF-Pago Facil;WEB;0012900026;00129;0;1;18139;FORD F-100 LUJO D;N;DNLB42173;KA13MY37569;WXY691;6;ABIERTA;A0;RESPONSABILIDAD CIVIL SOLAMENTE;0;;0,00;0;;0,00;0;;0,00;0;;0,00;0,00;355,78;0,00;0,00;5,62;8,24;0,00;0,00;78,68;18,91;467,23;1;0,00;4;PICK UP;1317;PICK UP FAMILIAR;1972;;;;;1;;;
MySQL 表:
CREATE TABLE `polizas` (
`id` int(11) NOT NULL,
`user` varchar(30) NOT NULL,
`fecha_carga` varchar(11) NOT NULL,
`seccion` varchar(3) DEFAULT NULL,
`propuesta` varchar(11) DEFAULT NULL,
`poliza` varchar(30) DEFAULT NULL,
`endoso` varchar(30) DEFAULT NULL,
`tipo_endoso` varchar(3) DEFAULT NULL,
`desc_tipo_endoso` varchar(30) DEFAULT NULL,
`pol_que_renueva` varchar(30) DEFAULT NULL,
`iva_cond` varchar(30) DEFAULT NULL,
`tipo_doc` varchar(30) DEFAULT NULL,
`nro_doc` varchar(30) DEFAULT NULL,
`apellido` varchar(30) DEFAULT NULL,
`domicilio` varchar(30) DEFAULT NULL,
`cod_postal` varchar(30) DEFAULT NULL,
`telefono` varchar(30) DEFAULT NULL,
`localidad` varchar(30) DEFAULT NULL,
`provincia` varchar(30) DEFAULT NULL,
`fecha_emision` varchar(30) DEFAULT NULL,
`fecha_inicio` varchar(30) DEFAULT NULL,
`fecha_vcto` varchar(30) DEFAULT NULL,
`canal_pago` varchar(30) DEFAULT NULL,
`desc_canal_pago` varchar(30) DEFAULT NULL,
`origen` varchar(30) DEFAULT NULL,
`productor` varchar(30) DEFAULT NULL,
`organizador` varchar(30) DEFAULT NULL,
`moneda` varchar(30) DEFAULT NULL,
`item` varchar(30) DEFAULT NULL,
`marca` varchar(30) DEFAULT NULL,
`modelo` varchar(30) DEFAULT NULL,
`cero_Km` varchar(30) DEFAULT NULL,
`motor` varchar(30) DEFAULT NULL,
`chasis` varchar(30) DEFAULT NULL,
`patente` varchar(30) DEFAULT NULL,
`tipo_carroceria` varchar(30) DEFAULT NULL,
`desc_tipo_carroceria` varchar(30) DEFAULT NULL,
`cobertura` varchar(30) DEFAULT NULL,
`desc_cobertura` varchar(30) DEFAULT NULL,
`cod_acc1` varchar(30) DEFAULT NULL,
`desc_acc1` varchar(30) DEFAULT NULL,
`valor_acc1` varchar(30) DEFAULT NULL,
`cod_acc2` varchar(30) DEFAULT NULL,
`desc_acc2` varchar(30) DEFAULT NULL,
`valor_acc2` varchar(30) DEFAULT NULL,
`cod_acc3` varchar(30) DEFAULT NULL,
`desc_acc3` varchar(30) DEFAULT NULL,
`valor_acc3` varchar(30) DEFAULT NULL,
`cod_acc4` varchar(30) DEFAULT NULL,
`desc_acc4` varchar(30) DEFAULT NULL,
`valor_acc4` varchar(30) DEFAULT NULL,
`suma_aseg` varchar(30) DEFAULT NULL,
`prima` varchar(20) DEFAULT NULL,
`recarg` varchar(30) DEFAULT NULL,
`der_emision` varchar(30) DEFAULT NULL,
`sellos` varchar(30) DEFAULT NULL,
`imp_tasas` varchar(30) DEFAULT NULL,
`otros` varchar(30) DEFAULT NULL,
`bonif` varchar(30) DEFAULT NULL,
`iva` varchar(30) DEFAULT NULL,
`adminis_financ` varchar(30) DEFAULT NULL,
`premio` varchar(30) DEFAULT NULL,
`cant_cuotas` varchar(30) DEFAULT NULL,
`ajuste` varchar(30) DEFAULT NULL,
`tipo_vehiculo` varchar(30) DEFAULT NULL,
`desc_tipo_vehiculo` varchar(30) DEFAULT NULL,
`codigo_uso` varchar(30) DEFAULT NULL,
`descripcion_uso` varchar(30) DEFAULT NULL,
`ano_fab` varchar(30) DEFAULT NULL,
`nro_prestamo` varchar(30) DEFAULT NULL,
`vcto_cuota1` varchar(30) DEFAULT NULL,
`vcto_prestamo` varchar(30) DEFAULT NULL,
`tipo_prestamo` varchar(30) DEFAULT NULL,
`tipo_operacion` varchar(30) DEFAULT NULL,
`seccion_pol_paquete` varchar(30) DEFAULT NULL,
`poliza_pol_paquete` varchar(30) DEFAULT NULL,
`fecha_pago` varchar(20) DEFAULT NULL,
`cobrada` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `polizas`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `poliza` (`poliza`,`endoso`);
ALTER TABLE `polizas`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
注意:我正在使用其他脚本插入日期并修改表上的tinyInt列,据我所知,这些与问题无关,可能可以忽略。
此外,我知道大多数列的长度都非常通用,而且列的数量也不必要地大。一旦这个问题解决,我将立即处理第一点,至于第二点,客户已要求表格与现在完全相同。我将了解在不影响所请求的结构的情况下优化它的方法,但如果您有任何建议,请随时分享!
编辑:这就是我切换数据编码的方法,它没有改变结果。
$fn = fopen($_FILES["polizas"]["tmp_name"], "r");
$result = fgets($fn);
$encoded = mb_convert_encoding($result, 'UTF-8', 'UTF-16LE');
最佳答案
当您省略 ENCLOSED BY '"'
时,所有字段都会被括起来并被视为字符串。您必须有由 ""括起来的字段,而其他字段则不然,并且您必须指定:OPTIONALLY ENCLOSED BY '"'
因为否则所有内容都被视为封闭的
$status = $pdo->exec(
"LOAD DATA LOCAL INFILE '" . $file . "'
IGNORE
INTO TABLE `polizas`
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(`seccion`, `propuesta`, `poliza`, `endoso`, `tipo_endoso`, `desc_tipo_endoso`, `pol_que_renueva`, `iva_cond`, `tipo_doc`, `nro_doc`, `apellido`, `domicilio`, `cod_postal`, `telefono`, `localidad`, `provincia`, `fecha_emision`, `fecha_inicio`, `fecha_vcto`, `canal_pago`, `desc_canal_pago`, `origen`, `productor`, `organizador`, `moneda`, `item`, `marca`, `modelo`, `cero_Km`, `motor`, `chasis`, `patente`, `tipo_carroceria`, `desc_tipo_carroceria`, `cobertura`, `desc_cobertura`, `cod_acc1`, `desc_acc1`, `valor_acc1`, `cod_acc2`, `desc_acc2`, `valor_acc2`, `cod_acc3`, `desc_acc3`, `valor_acc3`, `cod_acc4`, `desc_acc4`, `valor_acc4`, `suma_aseg`, `prima`, `recarg`, `der_emision`, `sellos`, `imp_tasas`, `otros`, `bonif`, `iva`, `adminis_financ`, `premio`, `cant_cuotas`, `ajuste`, `tipo_vehiculo`, `desc_tipo_vehiculo`, `codigo_uso`, `descripcion_uso`, `ano_fab`, `nro_prestamo`, `vcto_cuota1`, `vcto_prestamo`, `tipo_prestamo`, `tipo_operacion`, `seccion_pol_paquete`, `poliza_pol_paquete`)"
);
然后你的数据必须像这样(字段用“括起来”)
4;0;894606;707641;65;"Anul a Prorrata";0000000;"IN";"DNI";25035153;"BLANCO ALEJANDRO DANIEL";"B JARDIN MZA F CASA 9"; ..... etc
因为user称我为“红鲱鱼”,我想这意味着我不对,我会给你一个 link您可以在其中读到他们还带来了一个示例阅读,他们有一个整数列,他们说
if you omit the word OPTIONALLY, all fields are enclosed by the ENCLOSED BY character.
然后他们给出表格:
CREATE TABLE jokes
(a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joke TEXT NOT NULL);
LOAD DATA INFILE '/tmp/jokes.txt' INTO TABLE jokes
FIELDS TERMINATED BY ''
LINES TERMINATED BY '\n%%\n' (joke);
他们说:
If you specify OPTIONALLY, the ENCLOSED BY character is used only to enclose values from columns that have a string data type (such as CHAR, BINARY, TEXT, or ENUM):
1,"a string",100.20
2,"a string containing a , comma",102.20
3,"a string containing a " quote",102.20
4,"a string containing a ", quote and comma",102.20
我不是鱼! ;-)
关于php - 无法将整数数据插入MySQL,它插入为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278572/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!