Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建表格,并从csv或txt文件导入数据_Sql_Import From Csv - Fatal编程技术网

Sql 创建表格,并从csv或txt文件导入数据

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

我有一个包含股票报价的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(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),则可以通过用户界面创建表,然后:

  • 右键单击表格
  • 将表脚本设置为
  • 创造
  • 新建查询编辑器窗口

你好,马克,我感谢你的帮助和建议,但不幸的是,这并没有解决这个问题。我在这里迷路了,花了很多时间在VBA上…谢谢Mark,这是个好主意。我现在删除了bulk部分,表现在可以工作了。但是,它会在上午/下午的时候显示日期吗?@espenskie:我不太确定我是否理解你的问题。我认为应该正确导入时间,但根据您的设置,我想它最终可能会以24小时格式显示(而不是am/pm)。我现在从中得到了一些东西,但我很难确定日期和时间。。。当我得到这个输出值:2009-05-01 00:00:00时,你能看到我做错了什么吗?对于时间值,我得到了:10:20:00.0000000请参见我答案中的示例数据。在为日期编写数据时,您应该使用yyyy-mm-dd,例如:2012-08-25,时间应该使用hh:mm:ss(24小时时钟最简单)-并且不要忘记使用冒号而不是句号,例如:22:15:00。嗨,马克,我感谢您的帮助和建议,但不幸的是,这并没有解决问题。我在这里迷路了,花了很多时间在VBA上…谢谢Mark,这是个好主意。我现在删除了bulk部分,表现在可以工作了。但是,它会在上午/下午的时候显示日期吗?@espenskie:我不太确定我是否理解你的问题。我认为应该正确导入时间,但根据您的设置,我想它最终可能会以24小时格式显示(而不是am/pm)。我现在从中得到了一些东西,但我很难确定日期和时间。。。当我得到这个输出值:2009-05-01 00:00:00时,你能看到我做错了什么吗?对于时间值,我得到了:10:20:00.0000000请参见我答案中的示例数据。写入日期数据时,应使用yyyy-mm-dd例如:2012-08-25,时间应使用hh:mm:ss(24小时时钟最简单)