【发布时间】:2011-02-19 00:56:22
【问题描述】:
我必须每天从文本文件(制表符分隔)在数据库中插入新记录。 我正在尝试将其变成一个带有参数的存储过程,以便文件从中读取数据。
CREATE PROCEDURE dbo.UpdateTable
@FilePath
BULK INSERT TMP_UPTable
FROM @FilePath
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
RETURN
然后我会从我的代码 (C#) 中调用这个存储过程,指定要插入的文件。
这显然是行不通的,那我该怎么做呢?
要明确这里的问题是我不能将参数@FilePath 传递给FROM 子句,或者至少我不知道如何。
【问题讨论】:
-
为什么你需要它这样做。也许您至少可以使用 SSIS、BulkCopy 或 BCP...
-
因为数据库将被多个没有 sql server 访问权限的用户更新,他们将只提供一个 txt 文件,应用程序会将其插入到数据库中。 (先进入一个临时表,做一些检查,最后追加到另一个表)
-
好的,但我认为使用 SSIS 加载这些文件没有问题。不知何故,这些文件将被传递到某个目录。我的意思是你可以从那里加载这些文件。如果不是这种情况,请提供更多详细信息。
-
SSIS 可以安排定期运行并检查目录,甚至可以从电子邮件帐户获取文件。很多选择。
-
数据库位于我无法控制的 sql 服务器上,我只是将我的数据库存储在那里。现在我只有一个特快版,所以没有 ssis。
标签: c# sql-server import text-files