Mar*_*lly 33 sql-server sql-server-2005 xp-cmdshell
我试图从SQL查询(SQL Server 2005)中读取文本文件,但根本没有运气.我用EXEC和xp_cmdshell尝试了各种各样的东西,但都没有用.这是我试图解决这个问题的一般方法:
CREATE TABLE temp (data varchar(2000));
INSERT temp EXEC master.dbo.xp_cmdshell 'type file.txt';
Run Code Online (Sandbox Code Playgroud)
然后我尝试从临时表中选择数据.我经常搜索,我不知道自己错了什么.救命?
mar*_*c_s 41
你的文本文件是什么样的?每行一条记录?
您必须查看BULK INSERT语句 - 它应该类似于:
BULK INSERT dbo.YourTableName
FROM 'D:\directory\YourFileName.csv'
WITH
(
CODEPAGE = '1252',
FIELDTERMINATOR = ';',
CHECK_CONSTRAINTS
)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我正在导入CSV文件 - 但您也应该能够导入文本文件.
从MSDN文档 - 这是一个样本,希望适用于每行一个字段的文本文件:
BULK INSERT dbo.temp
FROM 'c:\temp\file.txt'
WITH
(
ROWTERMINATOR ='\n'
)
Run Code Online (Sandbox Code Playgroud)
似乎在我的测试环境中工作得很好:-)
小智 41
刚发现这个:
SELECT * FROM OPENROWSET(BULK N'<PATH_TO_FILE>', SINGLE_CLOB) AS Contents
Run Code Online (Sandbox Code Playgroud)
它会将文件的内容作为varchar(max)引入.替换SINGLE_CLOB为:
SINGLE_NCLOBfor varvarary(max)的nvarchar
SINGLE_BLOB(max)
感谢http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/为此!
| 归档时间: |
|
| 查看次数: |
160868 次 |
| 最近记录: |