.将CSV导入sqlite3数据库

.将CSV导入sqlite3数据库,csv,sqlite,Csv,Sqlite,我绝对是在当头棒喝,因为没有其他答案对我有效 我有一个CSV文件…这里有10行作为一个例子 Row 1: https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4813A Row 2: F.05.80 6-Jul-15 3-Nov-15 Release notes 1.67 MB » Row 3: https://h10145.

我绝对是在当头棒喝,因为没有其他答案对我有效

我有一个CSV文件…这里有10行作为一个例子

Row 1:    https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4813A                  
Row 2:    F.05.80   6-Jul-15    3-Nov-15    Release notes   1.67 MB »
Row 3:    https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4903A                  
Row 4:     I.10.107 24-Aug-15   2-Nov-15    Release notes   3.49 MB »
Row 5:     https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J9019B                 
Row 6:     Q.11.76  6-Feb-17    21-Feb-17   Release notes   2.80 MB »
Row 7:     https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J9022A                 
Row 8:     N.11.76  6-Feb-17    21-Feb-17   Release notes   3.11 MB »
Row 9:     https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J9147A                 
Row 10:     W.15.14.0015    23-Mar-17   30-Mar-17   Release notes   9.16 MB »
下面是CSV文件的屏幕截图

我还为此创建了一个数据库文件。它的名字是Test.db。在该数据库中,有一个名为output的表

当我运行
.schema Output
时,我得到

`CREATETABLE(输出(“”文本)

我正在尝试使用SQLite命令行来解决此问题

`C:\Windows\System32>sqlite3 c:\source\test.db
sqlite> .separator ,
sqlite> .mode csv
sqlite> .import c:/source/output_file.csv Output`
我收到了这个错误消息
c:/source/output_file.csv:59:预期有1列,但找到6列-忽略额外内容
此错误发生在从1到59的每一行上


我在这里遗漏了什么?

您的表的架构看起来已损坏,可能是因为格式使用不当,但它看起来只有一列。 图片中的输入文件显示您有许多

(顺便说一句,您在问题中的输入报价没有显示这一点。)
您正在使用
作为分隔符,用一列填充表格。
也就是说,sqlite在导入中看到许多列,只有一列需要填充

制作一个有六列的表格。
从安全的开始,即六列varchar(300)


或者,使用输入文件中没有的分隔符只导入一列。这将适用于只有一列的表。

回答我自己的问题:

我用来导入的CSV格式不好。我用一列和一个特定的标题字段重新创建了它,它工作正常


感谢Yunnosch的指导

似乎文件的第59行会很有趣。它是十行引号中的一行吗?我试过你的描述,对我来说很有用,在我应该提到的同一个文件夹中有一个文件。所以它应该是
。import import.sql toy
。试着用一个特殊的测试文件做同样的事情。用一个l做最简单的测试每行显示一个。显示表的架构。每行是否都有相同的错误?不仅是每行?不是每行,而是每行的列数不同?显示表的架构,确保其可读性。请尝试使用
上的标题从输出中选择*
。我认为它只会显示一个cocolumn.您使用的是sqlite命令行工具,不是吗?不要让GUI对您隐藏相关信息。我可能会对输入文件做一些不同的操作。我的老板刚刚告诉我,我们不需要所有6列中的数据,所以我要将我的程序改为只拉1列…我认为导入1列应该就行了…我会继续跟您联系如果需要,请注明日期并关闭此问题。请在关闭前显示表的可读模式好吗?我有点固执,我承认我希望看到我是对的。因此,将csv作为一列导入只有一列的表中是可行的?它一直只有一列?不,它从6列开始。我重新处理并让它使用1列。下一步是使用2列修复它。这
CREATETABLE(输出(“https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4813A“案文)
make six columns?它肯定是坏的,但是如果有什么问题的话,它会变成一列。另外,您的错误消息会抱怨六列不适合一列。我想您的SQLite与我对一列的猜测是一致的。