Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server SQL Server 2008-使用特定列从.txt或.csv插入_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server SQL Server 2008-使用特定列从.txt或.csv插入

Sql server SQL Server 2008-使用特定列从.txt或.csv插入,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我正在尝试插入从一个.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"

我正在尝试插入从一个.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"
任何帮助都将不胜感激

您可以使用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启用“临时分布式查询”

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
您可能还必须在提供程序属性下允许进程内。 服务器对象|链接服务器|提供程序


希望对您有所帮助。

如果您将数据保存为csv或excel格式,则可以使用SQL Server Management Studio功能通过向导而不是使用命令从工作表中导入数据

要访问此功能,请右键单击数据库,然后单击任务->导入数据。如果希望使用.txt/.csv文件,请在下一页选择平面文件源。如果要将csv保存为Excel文件并导入,请选择Excel

从那里跟着向导走就行了。可以将列导入新表或现有表


因此,将csv文件保存到Excel中,然后在导入之前手动删除不需要的列可能更容易

使用SSI。您可以设置一个可重复的包,也可以只使用使用SSIS的数据导入向导。我将使用并指定一个。仔细看,我发现您的数据包含在双引号中。这使得我的建议有点难。但它仍然是可以做到的。SSI可能是首选。有时,最好的解决方案是继续将每一行和每一列导入临时表,然后使用SQL命令将所需的行/列从临时表复制到最终目标表中。谢谢@TabAlleman-不知道为什么我没有想到这样做!