我在过去几天开始学习SQL,但在尝试将数据放入表格时陷入困境。
数据存储在文本文件中,格式为:
ColumnName1=SomeInteger
ColumnName2=SomeInteger
ColumnName3=SomeString
... etc
到目前为止,我已经设法通过剥离Python中的=SomeValue
来创建一个表(其中包含大约150个列,我希望在我知道更多后分开并分组)。然后使用CREATE TABLE
将列名称包装在电子表格中。有点乱,但它现在有效。
现在我陷入了以下困境:
LOAD DATA INFILE 'path/to/file.txt'
INTO TABLE tableName
COLUMNS TERMINATED BY '\n'
LINES STARTING BY '=';
我正在尝试让SQL将数据插入到指定的列名中(因为它们并不总是以相同的顺序),忽略等号,并使用唯一的文件名作为索引。
我还尝试使用'\='
转义equals字符,因为MySQL文档提到应该忽略LINES STARTING BY
参数之前的所有内容。键入LINES STARTING BY 'ColumnName1='
会设法忽略第一个实例,但这不是我想要的,并且对剩余的行不起作用。
如果有人能指出我正确的方向,我不反对阅读更多文档或教程。
编辑:行分隔如下:我已经获得了大约100,000个ini文件。其中每个名为FirstName_LastName.ini(保证唯一性),每行数据都包含在ini文件中。我需要将古老的帐户存储方法带入21世纪。 据传,MySQL的LOAD DATA对于这类任务来说特别快,这就是为什么我开始将它作为一种选择。我只是想知道是否有可能操纵它来处理我的格式数据,或者如果我最好通过解析器放入所有100k文件。如果有任何魔术师在阅读此内容,我仍然愿意接受使用SQL的建议。
p.s:如果有人对如何将我的数据(从这种文本格式)提取到单个表格有更好的想法,我也很乐意听到它们。
答案 0 :(得分: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)