我有一個約280列的csv文件,它可能會不時變化。有沒有辦法將csv文件導入sqlite3並讓它「猜」列類型? 我正在使用python腳本來導入它。csv導入sqlite3沒有指定列類型
0
A
回答
2
如果您可以在此項目中使用第三方庫,我建議使用pandas。
使用熊貓,你可以在兩個步驟做到這一點:
例如:
import pandas, pandas.io.sql, sqlite3
# some sample csv data copied from: http://wesmckinney.com/blog/?p=635
csvfilepath = '/path/to/file.csv'
# `index_col` set to False ensures pandas doesn't use 1st col of data as index
df = pandas.io.parsers.read_csv(csvfilepath,index_col=False)
# connect to in-memory database for testing; replace `:memory:` w/ file path
con = sqlite3.connect(':memory:')
pandas.io.sql.write_frame(df, 'test_tbl', con)
con.execute('select * from test_tbl').fetchone()
con.close()
查詢結果:
(u'C00410118',
u'P20002978',
u'Bachmann, Michele',
u'HARVEY, WILLIAM',
u'MOBILE',
u'AL',
366010290,
u'RETIRED',
u'RETIRED',
250,
u'20-JUN-11',
None,
None,
None,
u'SA17A',
736166,
u'A1FDABC23D2D545A1B83',
u'P2012')
並與內省的查詢,你可以看到大熊貓已完成創建表的工作,甚至推斷的數據類型:
con.execute("select * from sqlite_master where type='table';").fetchone()[4]
給出:
CREATE TABLE test_tbl ( [cmte_id] TEXT, [cand_id] TEXT, [cand_nm] TEXT, [contbr_nm] TEXT, [contbr_city] TEXT, [contbr_st] TEXT, [contbr_zip] INTEGER, [contbr_employer] TEXT, [contbr_occupation] TEXT, [contb_receipt_amt] INTEGER, [contb_receipt_dt] TEXT, [receipt_desc] REAL, [memo_cd] REAL, [memo_text] REAL, [form_tp] TEXT, [file_num] INTEGER, [tran_id] TEXT, [election_tp] TEXT)
0
使列標題在csv中與sqlite3表中的列名相同。然後在插入數據庫之前使用type()直接讀取並檢查類型。
相關問題
- 1. 導入CSV到SQLite3使用列子集
- 2. 類沒有指定類型
- 3. CSV導入錯誤SQLite3
- 4. csv導入到sqlite3崩潰
- 5. 「__kernel」沒有指定類型
- 6. 'MYV' 沒有指定類型
- 7. C++「......沒有指定類型」
- 8. C++沒有指定類型
- 9. 沒有指定類型
- 10. COUT沒有指定類型
- 11. _int64沒有指定類型
- 12. SDL_Window沒有指定類型
- 13. 沒有指定類型
- 14. G ++「沒有指定類型」
- 15. classX'沒有指定類型
- 16. Qt:QPlastiqueStyle沒有指定類型
- 17. SOCKET沒有指定類型
- 18. 'SerialStream'沒有指定類型
- 19. neo4j在從csv導入期間指定數據類型
- 20. 從CSV導入RethinkDB時指定數據類型
- 21. sqlite3列類型
- 22. 型班線沒有指定類型
- 23. Arduino的類「沒有指定類型」
- 24. 類沒有指定類型的錯誤
- 25. C++類錯誤沒有指定類型
- 26. 類的頭,串沒有指定類型
- 27. SQLite3導入CSV&排除/跳過標題
- 28. Sqlite3 - 如何從csv導入NULL值
- 29. 從iphone導入sqlite3中的csv文件。
- 30. (開放泛型類型)泛型類型,沒有指定參數
聽起來不像一個簡單的CSV文件 - [該網站有關於簡單CSV文件的一些提示](http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles)。這裏最好的問題是詢問,你有哪些數據可以涵蓋近300列,並且是不同的? – Makoto