我需要将超过40个txt文件加载到Mysql的表中。每个文件包含3列数据,每列列出一种特定类型的数据,但通常每个txt文件的格式完全相同,但这些文件名是不同的,首先我尝试LOAD DATA LOCAL INFILE 'path/*.txt' INTO TABLE xxx"
因为我认为使用*.txt
可以让Mysql加载此文件夹中的所有txt文件。但结果却没有。
那我怎么能让Mysql或python这样做呢?或者我是否需要先手动将它们合并到一个文件中,然后使用LOAD DATA LOCAL INFILE
命令?
非常感谢!
答案 0 :(得分:0)
唯一且最好的方法是将您的数据合并到一个文件中。使用Python非常容易:
fout=open("out.txt","a")
# first file:
for line in open("file1.txt"):
fout.write(line)
# now the rest:
for num in range(2,NB_FILES):
f = open("file"+str(num)+".txt")
for line in f:
fout.write(line)
f.close() # not really needed
fout.close()
然后运行您知道的命令(... INFILE ...)将一个文件加载到MySql。只要列之间的分隔严格相同,就可以正常工作。标签在我看来是最好的;)
答案 1 :(得分:0)
如果您想避免合并文本文件,可以轻松“扫描”文件夹并为每个文件运行SQL导入查询:
import os
for dirpath, dirsInDirpath, filesInDirPath in os.walk("yourFolderContainingTxtFiles"):
for myfile in filesInDirPath:
sqlQuery = "LOAD DATA INFILE %s INTO TABLE xxxx (col1,col2,...);" % os.path.join(dirpath, myfile)
# execute the query here using your mysql connector.
# I used string formatting to build the query, but you should use the safe placeholders provided by the mysql api instead of %s, to protect against SQL injections