如何将数据从另一个数据库(另一个服务器中)的视图导入到 SQL Server 2000 中的表中?

发布于 2024-08-22 15:54:33 字数 342 浏览 6 评论 0原文

我正在考虑使用 bcp 命令来解决用户身份验证,但是 bcp 命令是否能够导入到我的数据库中的表中?顺便说一句,我使用的是SQL Server 2000环境。

这是我到目前为止得到的代码:

SET @Command = 'bcp "SELECT vwTest.* from [myserver\sql].test.dbo.vwTest" queryout dbo.Test -C ACP -c -r \n -t ";" -S myserver\sql -Umyuser -Puser1'

EXEC master.dbo.xp_cmdshell @Command

I was thinking about using bcp command to solve the user authentication, but does a bcp command capable to import to a table in my database? By the way, I am using SQL Server 2000 environment.

Here's the code I have got so far:

SET @Command = 'bcp "SELECT vwTest.* from [myserver\sql].test.dbo.vwTest" queryout dbo.Test -C ACP -c -r \n -t ";" -S myserver\sql -Umyuser -Puser1'

EXEC master.dbo.xp_cmdshell @Command

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如果没有 2024-08-29 15:54:33

基于此处对 BCP、BULK INSERT、OPENROWSET(推断链接服务器)的比较< /a>:

...bcp 实用程序在进程外运行。要跨进程内存空间移动数据,bcp 必须使用进程间数据封送处理。进程间数据封送是将方法调用的参数转换为字节流的过程。这会显着增加处理器的负载。但是,由于 bcp [两者] 都会在客户端进程中解析数据并将数据[转换]为本机存储格式,因此它们可以从 SQL Server 进程中卸载解析和数据转换。

...bcp 可能不是传输数据的最有效方式。您可能最好:

  1. 创建一个 链接服务器实例 到其他数据库
  2. 使用INSERT 语句,以便根据链接服务器实例中公开的数据库中的记录填充表。

除了可能更高效之外,您只需设置一次链接服务器实例,而不是每次想要移动数据时运行 BCP 来创建输出脚本。

请注意,链接服务器实例基于另一个数据库上的用户,因此对另一个数据库的权限基于该用户的权限。

Based on the comparison of BCP, BULK INSERT, OPENROWSET (infer Linked Server) here:

...the bcp utility runs out-of-process. To move data across process memory spaces, bcp must use inter-process data marshaling. Inter-process data marshaling is the process of converting parameters of a method call into a stream of bytes. This can add significant load to the processor. However, because bcp [both] parses the data and [converts the] data into [the] native storage format in the client process, they can offload parsing and data conversion from the SQL Server process.

...bcp possibly isn't the most efficient means of transferring data. You might be better off to:

  1. Create a linked server instance to the other database
  2. Use INSERT statements, so that the tables are populated based on records from the database exposed in the linked server instance.

Besides potentially being more efficient, you only need to setup the linked server instance once versus running BCP to create output scripts every time you want to move data.

Mind that the linked server instance is based on a user on the other database, so permissions to the other database are based on that users' permissions.

夜雨飘雪 2024-08-29 15:54:33

当然!!

在源计算机上使用此命令(根据您的需要采用它):

bcp database.dbo.viewname out c:\temp\viewname.bcp

然后使用以下命令将数据导入回目标系统:

bcp newdatabase.dbo.importtable in c:\temp\viewname.bcp 
    -c -S(servername) -U(username) -P(password)

这应该从源中获取“viewname”的内容服务器上,将其放入临时文件中,然后将该文件插入新服务器上的新数据库中。

通常,您会将这些数据行加载到新的临时暂存表中,并使用 T-SQL 或其他方式将该数据插入到实际表中。

查看 有关 SQL Server 2000 中 bcp 的 MSDN 文档< /a> 有关所有这些开关及其含义的详细信息。

SURE !!

Use this command (adopt it for your needs) on your source machine:

bcp database.dbo.viewname out c:\temp\viewname.bcp

and then import the data back into your destination system using:

bcp newdatabase.dbo.importtable in c:\temp\viewname.bcp 
    -c -S(servername) -U(username) -P(password)

That should grab the contents of your "viewname" from the source server, put it in a temporary file, and insert that file back into the new database on the new server.

Typically, you would load those data rows into a new, temporary staging table, and form there, use T-SQL or other means to insert that data into your actual tables.

Check out the MSDN documentation on bcp in SQL Server 2000 for details on all those switches and their meanings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文