问题标签 [load-data-infile]

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.

0 投票
1 回答
1647 浏览

mysql - MySQL LOAD DATA - 使用 ColumnName=Value 格式加载文本文件

在过去的几天里,我开始学习 SQL,但是在尝试将我的数据放入表中时被卡住了。

数据存储在文本文件中,格式如下:

到目前为止,我已经设法通过剥离=SomeValuePython 中的内容创建了一个表(它有大约 150 列,我希望在我了解更多信息后将其分开并单独分组)。然后将列名包装CREATE TABLE在电子表格中。有点乱,但它现在有效。

现在我被困在以下几点:

我试图让 SQL 将数据插入到指定的列名中(如果它们的顺序并不总是相同),忽略等号,并使用唯一的文件名作为我的索引。我还尝试使用 转义等号字符'\=',因为 MySQL 文档提到LINES STARTING BY应该忽略参数之前的所有内容。打字LINES STARTING BY 'ColumnName1='设法忽略了第一个实例,但这并不是我想要的,并且不适用于其余的行。

如果有人能指出我正确的方向,我并不反对阅读更多文档或教程。

编辑:行是这样分隔的:我得到了大约 100,000 个 ini 文件。每一个都被命名为 FirstName_LastName.ini(保证唯一性),并且每一行数据都包含在 ini 文件中。我需要将过时的帐户存储方法带入 21 世纪。传闻 MySQL 的 LOAD DATA 对这类任务特别快,这就是为什么我开始研究它作为一个选项的原因。我只是想知道是否可以操纵它来处理我格式的数据,或者我是否最好将所有 100k 文件通过解析器。如果有任何魔术师阅读本文,我仍然愿意接受使用 SQL 的建议。

ps:如果有人对如何将我的数据(来自这种文本格式)放入单个表格有更好的想法,我也很想听听他们的意见。

0 投票
2 回答
26321 浏览

python - python中的MySQL LOAD DATA LOCAL INFILE示例?

我正在寻找用于从 python 执行 LOAD DATA LOCAL INFILE 命令的语法定义、示例、示例代码、wiki 等。

我相信如果可用,我也可以使用 mysqlimport,因此欢迎任何关于更好路线的反馈(和代码片段)。谷歌搜索并没有以当前信息的方式出现太多

任何一种情况的目标都是相同的:将数百个具有已知命名约定和日期结构的文件自动加载到单个 MySQL 表中。

大卫

0 投票
2 回答
4283 浏览

python - MySQL LOAD DATA INFILE 帮助

我想加载一个如下所示的 CSV 文件:

但是,如果您注意到,有些字段是不完整的。我在想 MySQL 只会跳过第一列丢失的行。当我运行命令时:

MySQL的输出是:

行数仅为 20,949,但 MySQL 报告为 41,898 行受到影响。为什么这样?此外,表中没有任何真正的变化。我也看不到生成的警告是关于什么的。我想使用 LOAD DATA INFILE,因为它需要 python 半秒来更新每一行,对于具有 20,000 多条记录的文件,这转换为 2.77 小时。

更新:修改代码以将自动提交设置为 'False' 并添加了 db.commit() 语句:

0 投票
1 回答
1758 浏览

mysql - 将空格分隔的数据导入 MySQL

我有以下格式的文件:

尝试使用导入数据

似乎只得到每行的前 3 个字段。有没有办法在不改变文件格式的情况下加载数据?

0 投票
7 回答
23938 浏览

sql - MySQL 将 latin1 数据转换为 UTF8

我使用 LOAD DATA INFILE 将一些数据导入 MySQL 数据库。表本身和列都使用UTF8字符集,但是数据库的默认字符集是latin 1。因为数据库的默认字符类型是latin1,而且我使用LOAD DATA INFILE没有指定字符集,它解释文件为 latin1,即使文件中的数据是 UTF8。现在我的 UTF8 列中有一堆编码错误的数据。我找到了这篇文章这似乎解决了类似的问题,即“UTF8 插入 cp1251”,但我的问题是“Latin1 插入 UTF8”。我尝试在那里编辑查询以将 latin1 数据转换为 UTF8,但无法正常工作。数据要么是一样的,要么比以前更加混乱。例如,Québec 一词显示为 Québec。

[附加信息]

When Selecting the data wrapped in HEX(), Québec has the value 5175C383C2A9626563.

该表的创建表(简称)是。

0 投票
8 回答
7869 浏览

c# - 使用 C# 将 XML 文件加载到 MySQL 的最快方法是什么?

问题

将大型(> 1GB)XML 文件转储到 MySQL 数据库的最快方法是什么?

数据

有问题的数据是 StackOverflow Creative Commons Data Dump。

目的

这将在我正在构建的离线 StackOverflow 查看器中使用,因为我希望在无法访问互联网的地方进行一些学习/编码。

我想在项目完成后将其发布给 StackOverflow 的其他成员,供他们自己使用。

问题

最初,我一次从 XML 读取/写入 DB 一条记录。这在我的机器上运行了大约 10 个小时。我现在使用的 hacktastic 代码将 500 条记录扔到一个数组中,然后创建一个插入查询以一次加载所有 500 条记录(例如“ INSERT INTO posts VALUES (...), (...), (...) ... ;”)。虽然这更快,但仍需要数小时才能运行。显然这不是最好的方法,所以我希望这个网站上的聪明人会知道更好的方法。

约束

  • 我正在使用 C# 作为桌面应用程序(即 WinForms)来构建应用程序。
  • 我使用 MySQL 5.1 作为我的数据库。这意味着像“ LOAD XML INFILE filename.xml”这样的特性在这个项目中是不可用的,因为这个特性只在 MySQL 5.4 及更高版本中可用。这个限制主要是因为我希望这个项目对我以外的人有用,我不想强​​迫人们使用 MySQL 的 Beta 版本。
  • 我希望将数据加载内置到我的应用程序中(即没有说明“在运行此应用程序之前使用 'foo' 将转储加载到 MySQL 中。”)。
  • 我正在使用 MySQL 连接器/网络,因此MySql.Data命名空间中的任何内容都是可以接受的。

感谢您提供的任何指示!


到目前为止的想法

将整个 XML 文件加载到列中,然后使用 XPath 解析它的存储过程

  • 这不起作用,因为文件大小受 max_allowed_pa​​cket 变量的限制,默认情况下设置为 1 MB。这远低于数据转储文件的大小。
0 投票
2 回答
144 浏览

mysql - 如何一次将多个条目插入 MySQL 数据库

我必须创建在解析 html 文件中找到的所有单词的直方图/字典。这包括找到的所有单词的字典,以及它们的频率直方图。

我想不出如何使用 PHP/MySQL 来做到这一点,因为可能需要一次插入 2000 个单词。

有任何想法吗?

0 投票
3 回答
16568 浏览

sql - 从 LOAD DATA INFILE 中查找 MySQL 错误

我在 MySQL 中运行 LOAD DATA INFILE 命令,其中一个文件在 mysql 提示符下显示错误。

如何检查警告和错误?现在我唯一需要做的就是提示在导入时报告了 65,535 个警告。

我如何让 mysql 告诉我这些警告是什么?我查看了错误日志,但找不到它们。运行“SHOW WARNINGS”命令只返回 64 个结果,这意味着剩余的 65,000 个警告必须在其他地方。

我如何找到这些错误?

0 投票
5 回答
4541 浏览

mysql - 使用带有不可打印字符分隔符的 MySQL LOAD DATA INFILE

我有一些供应商数据,其中 SOH(ASCII 字符 1)作为字段分隔符,STX(ASCII 字符 2)作为记录分隔符。是否可以在不预处理文件并用更常见的字符替换这些字符的情况下使用 LOAD DATA INFILE 加载此数据?

0 投票
2 回答
4011 浏览

mysql - 是否可以使用 LOAD DATA INFILE 类型命令来更新数据库中的行?

伪表:

目前first_name包含多行的用户全名。期望的结果是拆分数据,因此 first_name 包含“John”,last_name 包含“Smith”。

我有一个 CSV 文件,其中包含所需的数据格式:

有没有办法使用 LOAD DATA INFILE 命令处理 CSV 文件以使用 primary_key 更新此表中的所有行 - 并且在此过程中不替换行中的任何其他数据(即 date_of_birth)?