5

sqlite テーブルをテキスト ファイルにエクスポートしようとしていますが、このサイトで大きな助けが見つかりました。小さい出力にはうまく機能しますが、約 20k に達すると、出力が制限されているように見えます。

最初の試みは:

Bells UniCodeWriter に あるようにマークします。

私のテーブルには 15 列ありますが、読みやすくするためにここに 5 つリストしました

writer = UnicodeWriter(open("Export8.csv", "wb"))

writer.writerow(["RunID","JobNumber","StartTime","EndTime","Period"])

writer.writerows(results)

2回目の試みは次のとおりです。

response = cursor.execute("SELECT RunID, JobNumber, StartTime, EndTime, strftime('%s',substr(endtime,1,19)) - strftime('%s',substr(starttime,1,19)) FROM tblTest WHERE RunID <>0")

strfile = open('_output1.csv','wb')

for row in response:
    print >> strfile,row

3回目の試みは次のとおりです。

strfile = open('_output3.csv','wb')

while True:

    row = cursor.fetchone()

    if row == None:

        break
    print >> strfile,row
    enter code here

4回目の試行/テスト:

response = cursor.execute("SELECT RunID, JobNumber, StartTime, EndTime, Period FROM tblTest WHERE RunID <>0")

print response

結果

試行 1: 183 個の完全なレコードと、184 個のレコードの最初の列の出力を取得します

試行 2 および 3: 181 の完全なレコードと 182 のいくつかの列の出力を取得します。

試行 4: すべてのデータを画面に表示する

sqlite データベースを確認すると、205 件のレコードが表示されます。一度に100行しか出力できないことは承知していますが、なぜすべての行が出力されないのか疑問に思っています

4

3 に答える 3

1

私は3.4とsqlite3を使用しています。pandasを使わずになんとかデータを書き込めました

c = cur.execute("select * from HChange")

with open('c:/tmp/bse/Output.csv','w', newline='') as file:
    for i in c:
        a=c.fetchone()
        csv.writer(file).writerow(a)
于 2015-04-09T20:42:36.157 に答える
1

の引数としてカーソル自体を使用しようとしましたwriterowsか?

cursor.execute("select * from test")

csv_path = "out.csv"
with open(csv_path, "wb") as csv_file:
    csv_writer = csv.writer(csv_file)
    # Write headers.
    csv_writer.writerow([i[0] for i in cursor.description])
    # Write data.
    csv_writer.writerows(cursor)
于 2014-01-02T13:54:39.993 に答える