我试图从.txt文件插入(或.csv会更好!)但我希望能够从.txt(或.csv文件)中选择特定的列,例如#1#列#2 #5#10等。
这可能吗?
下面的MSSQL将插入整个内容并要求插入数据库中匹配的字段数。
BULK
INSERT TableName
FROM 'C:\Users\User\Desktop\test.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
以下是.csv中一行数据的示例: -
"1A","SOUTH BANK UNIVERSITY","","","","103","","BOROUGH ROAD","","","","LONDON","","SURREY","SOUTHWARK","1","L","38026","SE1 0AA","53180","17940","BEGE","Q71","08Q ","064"
非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用OPENROWSET
您需要安装Microsoft.ACE.OLDB.xx.0提供程序。
(我服务器上的xx = 15.0或12.0)
如果您的文件没有列名:
SELECT F1, F2, F5, F10
FROM OPENROWSET (
'Microsoft.ACE.OLEDB.15.0',
'Text;Database=C:\Projects\data;Extended Properties="HDR=No;IMEX=1"',
'SELECT * FROM data.txt') a
如果您的文件具有列名(指定列的名称)
SELECT Column1, Column2, Column5, Column10
FROM OPENROWSET (
'Microsoft.ACE.OLEDB.15.0',
'Text;Database=C:\Projects\data;Extended Properties="HDR=Yes;IMEX=1"',
'SELECT * FROM data.txt') a
您需要使用sp_configure
启用“Ad Hoc Distributed Queries”EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
您还可能必须在提供程序属性下“允许进行中”。 (服务器对象|链接服务器|提供商)
希望有所帮助。
答案 1 :(得分:0)
如果将数据保存为csv或excel格式,则可以使用SQL Server Management Studio功能通过向导而不是使用命令从工作表导入数据。
要访问此功能,请右键单击您的数据库,然后单击任务 - >导入数据。如果要使用.txt / .csv文件,请在下一页上选择“平面文件源”。如果要将csv另存为Excel文件并选择导入,请选择Excel。
从那里按照向导。您可以将列导入新表或现有表。
考虑一下,将csv文件保存到Excel中可能更容易,然后只需手动删除导入前不需要的列。