0

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

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

ColumnName1=SomeInteger
ColumnName2=SomeInteger
ColumnName3=SomeString
... etc

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

现在我被困在以下几点:

LOAD DATA INFILE 'path/to/file.txt'
INTO TABLE tableName
COLUMNS TERMINATED BY '\n'
LINES STARTING BY '=';

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

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

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

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

4

1 回答 1

0

就个人而言,我可能会在 python 中使用 MySQLdb 模块(可能在你最喜欢的发行版中名为 python-mysqldb 或 MySQL-python 之类的包中提供)。将数据格式化为元组列表,然后将其插入。来自http://mysql-python.sourceforge.net/MySQLdb.html的示例:

import MySQLdb

datalist = [("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95 ),
            ("Not So Much Spam Plate", 3, 2, 0, 3.95 ),
            ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95 )]

db = MySQLdb.connect(user='dude', passwd='foo', db='mydatabase')
c = db.cursor()

c.executemany(
    """INSERT INTO breakfast (name, spam, eggs, sausage, price)
    VALUES (%s, %s, %s, %s, %s)""",
    datalist)
于 2009-08-06T02:30:28.040 回答