2

我正在尝试使用 SQL 在数据库中创建一个表。数据当前位于一个看起来像这样的文本文件中,但有数千行这样的。

我的麻烦主要在于“CREATE TABLE”函数的参数。有没有办法说我想要所有的列?现在代码看起来像:

CREATE TABLE dbo.CFTC_Fin_Data
(

)

BULK INSERT dbo.CFTC_Fin_Data
    FROM 'H:\user\Desktop\CFTCData1.txt' 
    WITH 
    ( 
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n' 
    );

谢谢你的帮助。我对 SQL 很陌生,所以如果已经回答了类似的问题,我深表歉意,但我无法理解我阅读的任何答案。

4

3 回答 3

0

您的数据文件中有 4 列,您必须指定它们:

CREATE TABLE dbo.CFTC_Fin_Data
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
column_name4 data_type
)

(插入适当的列名和数据类型)

于 2012-05-31T15:08:39.807 回答
0

好吧,你必须查看你的文件,看看你在每个领域都有什么样的信息。

使用文件中的行,似乎

Field1 是一个字符串(3 个字符,其他行可能更多)?=>NVARCHAR(100)

Field2 是一个字符串(xx 字符)=>NVARCHAR(255)

Field3 是 DATE => DATE

Field4 似乎是各种东西 =>NVARCHAR(100)

所以像

CREATE TABLE dbo.CTFC_Fin_Data (
column1 NVARCHAR(100),
column2 NVARCHAR(255),
column3 DATE,
column4 NVARCHAR(100)
)

但是您需要检查所有文件以找到真正正确的值和数据类型

编辑 :

事实上,你真的需要用代码来做吗?

因为使用导入导出向导(在 SQL Server Management Studio 中),您可以导入数据文件,如果需要,向导可以为您创建表。

尝试 :

右键单击您的数据库名称,=> 任务 => 导入数据

并按照向导。

如果需要,您还可以保存 SSIS 包。

认为它会更适合你!

于 2012-05-31T15:11:47.917 回答
0

只是为了添加上面发布的答案,如果您不限于使用批量插入,那么您可能可以使用 openrowset。使用 Openrowset 的优点是您可以将值插入到动态创建的表中。由于列数不同,您可以尝试使用以下语法

 SELECT * INTO newTable

 FROM OPENROWSET(...)
于 2012-05-31T17:02:50.893 回答