问题标签 [fgetcsv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - fgetcsv 返回太多条目
我有以下代码:
问题是,文件的内容如下所示:
等等
有时,if 中的测试会显示三个条目,第一个是数字,第二个是名称,第三个只是... emtpy。
这导致 if 块失败,我很难过。我知道我可以对 >=2 进行 if 块测试,但是有什么方法可以让它仅仅认识到有两个项目的事实吗?我不喜欢 fgetcsv 在行尾找到“神秘”字符。
这可能是运行基于 Windows 的文件错误的 Unix 服务器吗?如果是这样,并且我正在运行没有 dos2unix 的 ubuntu 服务器,我从哪里得到它?
php - 使用未转义的附件读取 CSV 文件
我正在读取一个 CSV 文件,但其中一些值没有被转义,所以 PHP 读错了。这是一个坏行的例子:
" 635",","AUBREY R. PHILLIPS (1920- ) - 粉彩描绘陡峭河谷中的小屋,可能是北威尔士,签名并注明日期,2000 年,带框,66 厘米 x 48 厘米。另一幅乡村景观,标题为反面“收获时间,萨默塞特”签名并注明日期,87 年,装裱,69 厘米 x 49 厘米。(2) NB - 奥布里·菲利普斯是伍斯特郡的艺术家,曾就读于斯托布里奇艺术学院。","40","60","WAT ","绘画、版画和水彩画",
你可以看到Harvest Time,Somerset在它周围有引号,导致 PHP 认为它是一个新值。
当我在每一行上执行 print_r() 时,虚线最终看起来像这样:
这显然是错误的,因为它现在包含比其他正确行更多的数组元素。
这是我正在使用的 PHP:
具有错误数量的值的行被放入$error_rows
,其余的被放入一个大$lots
数组中。
我能做些什么来解决这个问题?谢谢。
php - fgetcsv - 对第一列值执行功能?
我有一个两行的csv。
这将返回两个数组,在第一个数组的末尾有一个换行符。
如果我想访问第一列,我会
并得到
但是,如果我这样做:
我在 $post_ID 上得到零输出
如何对每个第一列值执行函数?
php - PHP 5.3:fgetcsv 和丢失的字母
当我使用fgetcsv
方法从 csv 文件中读取时,如果它们位于字符串的开头,它会删除“Å”和“Ø”。
假设我的 csv 只包含一行ÅbyÅÅÅÅhøjÅ
,输出是byÅÅÅÅhøjÅ
(注意开头缺少“Å”)
有任何想法吗?
php - PHP fgetcsv() 搜索并覆盖文件
我有一个带有“代码”和“描述”的 .csv 文件。我想搜索 .csv,如果找到重复的“代码”,请替换整行。
IE。csv 文件:
如果要找到“STA-102”,请将描述替换为某些内容,即:
这些是动态的,所以我需要一个 if 语句。这可以使用fgetcsv()
吗?
以下内容不起作用,但我现在只知道:
为了写入我的文件开始,我有:
如果需要,我如何将上面的内容与 if 语句合并以覆盖代码?
mysql - 如何从 Mysql_fetch_array 中获取单行/数据?
我正在使用 fgetcsv() 通过 PHP 读取 .csv 文件。现在我可以获取我的意思是从 .csv 文件中读取数据。然后我需要用我的获取结果检查 SKU 列,因此必须执行插入或更新。假设 SKU 已经存在,那么我必须更新表中的行,否则我需要插入新记录。我已经编写了以下代码...请检查 n 告诉我我在哪里做错了-:
php - MySQL 没有插入所有成功的插入查询...为什么?
在我继续之前,这纯粹是一个直觉问题。也就是说,我不是在寻找解决我的 PHP/MySQL 代码中特定错误的答案。相反,我想了解在解决我的问题时需要考虑的可能问题范围。为此,我不会发布代码或附加脚本 - 我将简单地解释我做了什么以及发生了什么。
我已经编写了 PHP 脚本
- 读取 X 记录的 CSV 文本文件以插入 MySQL 数据库表和/或更新适用的重复条目;
- 将所述记录插入我将称为该数据集的“根”表中;
- 从“根”表中选择特定字段的子集记录,然后将这些记录插入“主”表;和
- 从主表创建输出导出文本文件以进行分发。
我每 30 分钟通过单独的计划 cron 任务处理几个 CSV 文件。总而言之,从各种来源来看,估计有 420,000 个从文件到根表的插入事务,另外还有 420,000 个通过计划任务从根表到主表的插入事务。
其中一项任务涉及一个包含大约 400,000 条记录的 CSV 文件。处理过程没有错误,但问题是:在 MySQL 指示已成功插入根表的 400,000 条记录中,只有大约 92,000 条记录实际存储在根表中 - 我从计划中丢失了大约 308,000 条记录任务。
其他计划任务分别处理大约 16,000 和 1,000 个事务,并且这些事务处理完美。事实上,如果我将交易数量从 400,000 减少到 10,000,那么这些过程也很好。显然,这不是这里的目标。
为了解决这个问题,我尝试了几种补救措施......
- 增加我的服务器的内存(并增加 php.ini 文件中的最大限制)
- 获得具有扩展内存的专用数据库(与共享 VPS 数据库相反)
- 重写我的代码以大大消除存储数组,这些数组会占用内存并在运行时处理 fgetcsv() 进程
- 使用 INSERT DELAYED MySQL 语句(与普通的 INSERT 语句相反)
...而且这些补救措施都没有达到预期的效果。
鉴于迄今为止采取的行动缺乏成功,此时应考虑采取何种范围的补救行动?谢谢...
mysql - 加载数据不可用;fgetcsv 超时;备择方案?
我有一个网站,每周上传一次赛马数据的 CSV。CSV 包含目前在英国注册的约 19,000 匹赛马的详细信息,平均大小约为 1.3MB。我有一个脚本来处理该 csv 并且如果它存在并且评级数据已更改,则更新马,或者如果它不存在则添加它。如果一匹马没有变化,它会跳到下一匹马。该脚本有效,因为它在我用作测试的主机上运行。运行需要 5 或 6 分钟(我知道不太理想),但它奏效了。
但是,我们现在正在客户端主机的暂存版本上进行测试,它运行了 15 分钟,然后返回 504 超时。我们已经尽可能地调整了 htaccess 和 php.ini 设置……不高兴。
主机处于共享环境中,所以他们告诉我 MySQL 的 LOAD DATA 对我们不可用。
您会尝试哪些其他替代方法?或者,例如,有没有办法将 CSV 拆分成块并依次在每个块上运行一个进程?
php - fgetcsv错误插入数据库
我正在尝试使用以下命令将 .txt 文件(转换为 csv)插入数据库:
而 (($data = fgetcsv($prop, 1000, ",")) !== FALSE) {
当我尝试使用 phpmyadmin 使用文件本身进行操作时,它可以工作,但是文本确实包含“,”所以我认为它可能会尝试将它们作为分隔符读取并将结果抛出。有人可以帮忙吗?
错误是 - 1. 放置数千个空结果 2. 未将结果放置在正确的字段中
谢谢
php - 使用 PHP 将 CSV 文件导入 MySQL
fgetcsv
我正在尝试使用该函数将 CSV 数据导入 MySQL 数据库。
问题是它卡在导入过程之间并显示以下错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'S',0,0)' 附近使用正确的语法
每次只导入部分文件。仅导入 10000 行文件中的 200-300 行。
这是我的表的 DDL:
到目前为止我还没有找到问题,任何帮助表示赞赏。谢谢。