我读到了这一点:使用Python将CSV文件导入sqlite3数据库表
并且似乎每个人都建议使用逐行阅读而不是使用SQLite的批量.import.但是,如果您有数百万行数据,这将使插入真的很慢.有没有其他方法来规避这个?
更新:我尝试了以下代码逐行插入,但速度不如我预期的那么好.无论如何都要改进它
for logFileName in allLogFilesName:
logFile = codecs.open(logFileName, 'rb', encoding='utf-8')
for logLine in logFile:
logLineAsList = logLine.split('\t')
output.execute('''INSERT INTO log VALUES(?, ?, ?, ?)''', logLineAsList)
logFile.close()
connection.commit()
connection.close()
Run Code Online (Sandbox Code Playgroud) 我正在将多个 CSV 文件导入到一个表中。CSV 导入的文档说
当表已存在时,CSV 文件的每一行(包括第一行)都被假定为实际内容。如果 CSV 文件包含列标签的初始行,您可以使用“--skip 1”选项使 .import 命令跳过该初始行。
但我似乎无法找到传递该标志的有效方法。我尝试了以下方法:
sqlite> .import foo.csv contributions --skip 1
Usage: .import FILE TABLE
sqlite> .import --skip 1 foo.csv contributions
Usage: .import FILE TABLE
sqlite> .import foo.csv --skip 1 contributions
Usage: .import FILE TABLE
Run Code Online (Sandbox Code Playgroud)
我使用的是3.30.1版本。
我需要在Windows上用Python导入CSV文件.我的文件由';'分隔 并且包含非英语符号和逗号(',')的字符串.
我看了帖子:
当我跑:
with open('d:/trade/test.csv', 'r') as f1:
reader1 = csv.reader(f1)
your_list1 = list(reader1)
Run Code Online (Sandbox Code Playgroud)
我遇到了一个问题:逗号更改为" - "符号.
当我尝试:
df = pandas.read_csv(csvfile)
Run Code Online (Sandbox Code Playgroud)
我有错误:
pandas.io.common.CParserError:标记数据时出错.C错误:第13行预计有1个字段,见2.
请帮忙.我更喜欢使用pandas,因为代码较短而没有列出CSV文件中的所有字段名称.
我知道可能有暂时替换逗号的工作.不过,我想通过一些参数解决它到熊猫.
Dask没有像pandas这样的df.to_sql(),因此我正在尝试复制该功能并使用该map_partitions方法创建sql表。这是我的代码:
import dask.dataframe as dd
import pandas as pd
import sqlalchemy_utils as sqla_utils
db_url = 'my_db_url_connection'
conn = sqla.create_engine(db_url)
ddf = dd.read_csv('data/prod.csv')
meta=dict(ddf.dtypes)
ddf.map_partitions(lambda df: df.to_sql('table_name', db_url, if_exists='append',index=True), ddf, meta=meta)
Run Code Online (Sandbox Code Playgroud)
这将返回我的dask dataframe对象,但是当我查看我的psql服务器时,没有新表...这里出了什么问题?
UPDATE 仍然无法使其正常工作,但是由于独立问题。后续问题:重复的键值违反唯一约束-尝试从dask数据帧创建sql表时出现postgres错误
我有一个没有标题的 CSV 文件,并且正在尝试从文件中的某些列创建 SQL 表。我尝试了此处给出的解决方案:Importing a CSV file into a sqlite3 database table using Python,但不断收到 col1 未定义的错误。然后我尝试在 CSV 文件中插入标头,但仍然收到 KeyError。
任何帮助表示赞赏!(我对SQL不太熟悉)
我正在使用 读取 800 Mb CSV 文件pandas.read_csv,然后使用原始 Pythonpickle.dump(datfarame)保存它。结果是 4 Gb pkl 文件,因此 CSV 大小乘以 5。
我希望 pickle 能够压缩数据而不是扩展数据。另外,因为我可以对 CSV 文件执行 gzip,将其压缩到 200 Mb,然后除以 4。
我愿意加快程序的加载时间,并认为酸洗会有所帮助,但考虑到磁盘访问是主要瓶颈,我了解我宁愿必须压缩文件,然后使用压缩选项来加快pandas.read_csv速度加载时间。
那是对的吗?
pickling pandas dataframe 扩展数据大小是否正常?
您通常如何加快加载时间?
使用 pandas 加载的数据大小限制是多少?
有可能将sqlite3表导出为csv或xls格式吗?我正在使用python 2.7和sqlite3.
我试图模仿一些代码,我有一个SQL工作,但使用所有的Python代替。随着这里一些帮助 CSV到Python解释所有的列名?
我现在可以将我的压缩 csv 文件读入 dict 只有一行,最后一行。(如何获取行样本或整个数据文件?)
我希望有一个内存常驻表,当我完成时,我可以像 sql 一样操作它,例如通过将坏数据匹配到另一个具有坏数据和正确条目的表来清理数据..然后按时间段和平均类型求和像.. 总数据文件大约有 500,000 行.. 我对将所有内容都放在内存中并不大惊小怪,但我想尽我所能解决一般情况,所以我知道不求助于 SQL 可以做什么
import csv, sys, zipfile
sys.argv[0] = "/home/tom/Documents/REdata/AllListing1RES.zip"
zip_file = zipfile.ZipFile(sys.argv[0])
items_file = zip_file.open('AllListing1RES.txt', 'rU')
for row in csv.DictReader(items_file, dialect='excel', delimiter='\t'):
pass
# Then is my result is
>>> for key in row:
print 'key=%s, value=%s' % (key, row[key])
key=YEAR_BUILT_DESC, value=EXIST
key=SUBDIVISION, value=KNOLLWOOD
key=DOM, value=2
key=STREET_NAME, value=ORLEANS RD
key=BEDROOMS, value=3
key=SOLD_PRICE, value=
key=PROP_TYPE, value=SFR
key=BATHS_FULL, value=2
key=PENDING_DATE, value=
key=STREET_NUM, value=3828
key=SOLD_DATE, value=
key=LIST_PRICE, value=324900
key=AREA, …Run Code Online (Sandbox Code Playgroud) python ×7
csv ×5
pandas ×3
sqlite ×3
dask ×1
dataframe ×1
dictionary ×1
list ×1
pickle ×1
postgresql ×1
python-2.7 ×1
separator ×1
sql ×1