在sql server db中导入txt的存储过程
我每天必须从文本文件(制表符分隔)在数据库中插入新记录。 我试图将其变成一个存储过程,其中包含一个可供文件读取数据的参数。
CREATE PROCEDURE dbo.UpdateTable
@FilePath
BULK INSERT TMP_UPTable
FROM @FilePath
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
RETURN
然后我会从我的代码 (C#) 调用此存储过程,指定要插入的文件。
这显然是行不通的,那么我该怎么做呢?
需要明确的是,这里的问题是我无法将参数 @FilePath
传递给 FROM
子句,或者至少我不知道如何传递。
I have to insert new records in a database every day from a text file ( tab delimited).
I'm trying to make this into a stored procedure with a parameter for the file to read data from.
CREATE PROCEDURE dbo.UpdateTable
@FilePath
BULK INSERT TMP_UPTable
FROM @FilePath
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
RETURN
Then i would call this stored procedure from my code (C#) specifying the file to insert.
This is obviously not working, so how can i do it ?
Just to be clear the problem here is that i can't pass the parameter @FilePath
to the FROM
clause, or at least i don't know how.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
抱歉,我误会了。
您需要动态创建 SQL 语句,然后执行它:
Sorry, I misunderstood.
You need to create the SQL statement dynamically and then execute it:
抱歉,如果我来晚了,但我建议采用不同的方法 - 在 C# 应用程序中打开文件并将其转换为更 SQL 友好的内容、DataTable 甚至 XML。在 C# 中,您可以完全控制如何解析文件。然后编写存储过程来接受您的 DataTable 或 XML。 DataTable 更好,但不能与实体框架一起使用。
关于如何通过加入此类输入来执行插入,有很多帮助,并且 SQL Server 针对集合操作进行了优化。
Sorry if I am late here, but I would suggest a different approach - open the file in your C# application and convert it to something more SQL-friendly, a DataTable or even XML. In C# you have complete control over how you parse the files. Then write the stored procedure to accept your DataTable or XML. A DataTable is preferable, but cannot be used with Entity Framework.
There is lots of help around of how to do inserts by joining to this sort of input, and SQL Server is optimised for set operations.