Sql 创建表格,并从csv或txt文件导入数据
我有一个包含股票报价的CSV文件。谈到SQL,我是新手,但我做了很多研究,并提出了一个我认为应该可行的代码。但事实并非如此。我一路上都会出错Sql 创建表格,并从csv或txt文件导入数据,sql,import-from-csv,Sql,Import From Csv,我有一个包含股票报价的CSV文件。谈到SQL,我是新手,但我做了很多研究,并提出了一个我认为应该可行的代码。但事实并非如此。我一路上都会出错 USE ShakeOut GO CREATE TABLE CSVTest1 (Ticker varchar(10), dateval smalldatetime), timevale time(), Openval varchar(10), Highval varchar(10), Lowval varchar(10), Closeval varchar
USE ShakeOut
GO
CREATE TABLE CSVTest1
(Ticker varchar(10),
dateval smalldatetime),
timevale time(),
Openval varchar(10),
Highval varchar(10),
Lowval varchar(10),
Closeval varchar(10),
Volume varchar(10),
)
GO
BULK
INSERT CSVTest1
FROM 'c:\TEST.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest1
GO
--Drop the table to clean up database.
DROP TABLE CSVTest1
GO
我的CSV文件的时间值为03:15:00 PM,我不知道如何在表中设置它。我认为其他值大致正确,以下是我的csv文件示例:
5/1/2009,9:30:00 AM,18.21,18.45,18.21,18.32,32163
5/1/2009,9:35:00 AM,18.33,18.34,18.27,18.29,36951
5/1/2009,9:40:00 AM,18.29,18.38,18.25,18.37,53198
5/1/2009,9:45:00 AM,18.38,18.4,18.28,18.285,49491
下面是我在SQL Management Studio中的错误消息:
Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ','. Msg 208,
Level 16, State 82, Line 3 Invalid object name 'CSVTest1'. Msg 208,
Level 16, State 1, Line 3 Invalid object name 'CSVTest1'. Msg 3701,
Level 11, State 5, Line 3 Cannot drop the table 'CSVTest1', because it
does not exist or you do not have permission.
我真的很感谢你的帮助,我的头在这么长时间没有任何进展的情况下快要爆炸了。我也试过MySQL,也没用
由于我是新手,可能需要对其进行详细解释。在
CREATE TABLE
语句中似乎有一个多余的逗号。在结束参数之前的最后一列后面有一个逗号。也许它在某些实现中是有效的,但您可以尝试删除它。将其更改为:
Volume varchar(10)
dateval smalldatetime,
啊-第二列定义中似乎有一个无关的结束父项。将其更改为:
Volume varchar(10)
dateval smalldatetime,
和时间列:
timevale time,
最后,您可能应该尝试更正CREATE TABLE语句的语法,然后开始添加其他部分。在
CREATE TABLE
语句中似乎有一个多余的逗号。在结束参数之前的最后一列后面有一个逗号。也许它在某些实现中是有效的,但您可以尝试删除它。将其更改为:
Volume varchar(10)
dateval smalldatetime,
啊-第二列定义中似乎有一个无关的结束父项。将其更改为:
Volume varchar(10)
dateval smalldatetime,
和时间列:
timevale time,
最后,您可能应该尝试更正CREATE TABLE语句语法,然后开始添加其他部分。最后一列定义后不需要逗号:
Volume varchar(10),
我假设timevale
应该是timeval
time()
应该是time
另外,我可能很挑剔,但是除了前两个之外,所有列名的第一个字母都大写了,这不会导致错误,但最好有一个一致的命名约定。我会大写val中的“v”并写出整个单词
CSV数据也需要修改-您需要指定每一列,即使它为空。请参见我的示例数据(每行末尾的新行仅用于说明)
您的CSV文件需要为每个要插入的记录添加一行,如行终止符='\n'
所指定,并在每个字段之间添加一个逗号,如字段终止符=','
所指定
编辑:
顺便说一下,如果您使用的是SQL Server Management Studio(SSMS),则可以通过用户界面创建表,然后:
- 右键单击表格
- 将表脚本设置为
- 创造
- 新建查询编辑器窗口
Volume varchar(10),
我假设timevale
应该是timeval
time()
应该是time
另外,我可能很挑剔,但是除了前两个之外,所有列名的第一个字母都大写了,这不会导致错误,但最好有一个一致的命名约定。我会大写val中的“v”并写出整个单词
CSV数据也需要修改-您需要指定每一列,即使它为空。请参见我的示例数据(每行末尾的新行仅用于说明)
您的CSV文件需要为每个要插入的记录添加一行,如行终止符='\n'
所指定,并在每个字段之间添加一个逗号,如字段终止符=','
所指定
编辑:
顺便说一下,如果您使用的是SQL Server Management Studio(SSMS),则可以通过用户界面创建表,然后:
- 右键单击表格
- 将表脚本设置为
- 创造
- 新建查询编辑器窗口