我正在尝试使用SQL在数据库中创建表。数据当前位于文本文件中,看起来像this,但有数千行。
我的麻烦主要在于“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很陌生,所以如果已经回答了类似的问题我会道歉,但我无法理解我读过的任何答案。
答案 0 :(得分:0)
您的数据文件中有4列,您必须指定它们:
CREATE TABLE dbo.CFTC_Fin_Data
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
column_name4 data_type
)
(插入适当的列名和数据类型)
答案 1 :(得分:0)
嗯,你必须查看你的文件,看看你在每个领域有什么样的信息。
使用文件中的行,似乎
Field1是一个字符串(3个字符,在其他行中可能更多)? => NVARCHAR(100)
Field2是一个字符串(xx char)=> 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包。
认为这对你更合适!
答案 2 :(得分:0)
只是添加到上面发布的答案,如果你不限制使用Bulk insert,那么你可以使用openrowset。使用Openrowset的优点是你可以将值插入到动态创建的表中。由于列数不同,你可以尝试使用以下语法
SELECT * INTO newTable
FROM OPENROWSET(...)