【问题标题】:SQL Server 2008 R2: Import table from text file when column names have a / in themSQL Server 2008 R2:当列名中包含 / 时,从文本文件导入表
【发布时间】:2012-01-05 22:28:42
【问题描述】:

当表格的列名中有 / 时,如何将表格从文本文件导入数据库?

我有一个 SQL Server 2008 R2 表,其中的列名称中包含 /。 (SAP 数据库) 例如:/BIC/FIC_SD001 有一个名为 /BIC/O_CST_00 的列

我已将此表导出(使用导入/导出向导)到一个文本文件,并且斜线在那里。

当我将表导入不同的数据库(使用向导)时,列中的所有 / 都将被删除并替换为空格。 上面的列现在看起来像这样:BIC 0_CST_00

提前感谢您的帮助!

【问题讨论】:

    标签: sql sql-server sql-server-2008-r2 sap


    【解决方案1】:

    在名为 Select Source Tables and Views 的向导步骤中,您必须单击 Edit Mappings... 在那里您可以手动更改 Destination 列名称(回退缺少的斜线)。

    【讨论】:

    • 你是对的,但我有 20 个表,每个表大约有 40 列,就像这样。我应该在这个问题上更具体一些,您知道执行此操作的脚本/自动方式吗?
    • 不,我想不出自动解决方案。实际上,这显然是一个错误,我认为您应该直接与 Microsoft 联系。
    【解决方案2】:

    您可以使用 BCP Utility 将数据从 sql server 导入或导出到文本文件,反之亦然。

        BCP Database.TableName out "Location of the text file " -c -S ServerName -T 
    

    上面的命令会将sql server表中的数据加载到平面文件中

    要将数据从平面文件加载到 SQL 服务器,命令如下:-

        BCP Database.TableName in "Location of the text file " -c -S ServerName -T 
    

    以上 2 个命令适用于 Windows 身份验证

    【讨论】:

    • 我试过 BCP bwq./BIC/FIC_SD001 out "c:\temp\sd001" -c -S -T and BCP bwq."/BIC/FIC_SD001" out "c: \temp\sd001" -c -S -T。两者都收到错误:处理命令行时发生错误。附言我为 输入了实际的服务器名称
    • 如果您与服务器有可信连接,您可以删除 -S 标志。否则,请尝试不带任何空格的 -S。例如:-Smyserver
    • 具有 Windows 身份验证的 Adventure Work 数据库的 BCP out 命令示例如下: BCP AdventureWorksLT.SalesLT.Address out "C:\temp\sd001" -c -S CBR-DEL1156\SQL2005 - T 如果你没有正确编写数据库、模式和表名,你会得到这个错误
    • 感谢您的帮助...我想通了。我需要在数据库、模式和表周围添加 []。在服务器上的命令提示符下,我输入了以下内容:BCP [BWQ].[bwq].[/BIC/FIC_SD001] out "c:\temp\sd001.txt" -c -T
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多