【问题标题】:SQL- BCP Export ORDER BY with UNION ALLSQL-BCP 使用 UNION ALL 导出 ORDER BY
【发布时间】:2020-01-18 22:46:16
【问题描述】:

我正在尝试将 bcp 数据导出到 CSV 文件。但我发现我的 CSV 中的数据有问题。所以我试图添加 ORDER BY 以正确排序。我正在使用 UNION ALL 来引入列标题,但是在尝试使用 ORDER BY 时似乎会产生问题。

bcp "select CHAR(34)+""SampleNo""+CHAR(34),CHAR(34)+""Location Code""+CHAR(34),CHAR(34)+""Location Description""+CHAR(34),CHAR(34)+""Collection Date""+CHAR(34),CHAR(34)+""Submit Date""+CHAR(34),CHAR(34)+""File Name""+CHAR(34),CHAR(34)+""Analysis Code""+CHAR(34),CHAR(34)+""Analyte Name""+CHAR(34),CHAR(34)+""Result""+CHAR(34)+CHAR(44) union all select CHAR(34)+SAMPNO+CHAR(34),CHAR(34)+LOCCODE+CHAR(34),CHAR(34)+LOCDESCR+CHAR(34),CHAR(34)+COLDATE+CHAR(34),CHAR(34)+SUBDATE+CHAR(34),CHAR(34)+MYSAMPNO+CHAR(34),CHAR(34)+ACODE+CHAR(34),CHAR(34)+ANALYTE+CHAR(34),CHAR(34)+RESULT+CHAR(34)+CHAR(44) FROM [TEST].dbo.DATA_EXPORT ORDER BY ""SAMPLE_NO"" " QUERYOUT '+ @file + ' -S SERV2012R2 -U sa -P password -c -t","

我收到以下错误:

SQLState = 37000, NativeError = 408
Error = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A constant 
expression was encountered in the ORDER BY list, position 1.

还有……

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Unable to resolve column 
level collations
BCP copy out failed

我想要完成的是 CSV 数据遵循与数据库表相同的顺序。

【问题讨论】:

  • 请将您的代码格式设置得更好一些 - 这不可读,您能否更清楚地了解问题所在?
  • @MarkTaylor 感谢马克的反馈。进行了一些编辑并澄清了我想要完成的工作。

标签: sql csv bcp


【解决方案1】:

我想通了,而不是使用列名,我只需要使用字段位置。所以在这种情况下,它是位置 1,“ORDER BY 1”。

bcp "select CHAR(34)+""SampleNo""+CHAR(34),CHAR(34)+""Location Code""+CHAR(34),CHAR(34)+""Location Description""+CHAR(34),CHAR(34)+""Collection Date""+CHAR(34),CHAR(34)+""Submit Date""+CHAR(34),CHAR(34)+""File Name""+CHAR(34),CHAR(34)+""Analysis Code""+CHAR(34),CHAR(34)+""Analyte Name""+CHAR(34),CHAR(34)+""Result""+CHAR(34)+CHAR(44) union all select CHAR(34)+SAMPNO+CHAR(34),CHAR(34)+LOCCODE+CHAR(34),CHAR(34)+LOCDESCR+CHAR(34),CHAR(34)+COLDATE+CHAR(34),CHAR(34)+SUBDATE+CHAR(34),CHAR(34)+MYSAMPNO+CHAR(34),CHAR(34)+ACODE+CHAR(34),CHAR(34)+ANALYTE+CHAR(34),CHAR(34)+RESULT+CHAR(34)+CHAR(44) FROM [TEST].dbo.DATA_EXPORT ORDER BY 1 " QUERYOUT '+ @file + ' -S SERV2012R2 -U sa -P password -c -t","

现在这又造成了另一个问题。由于我使用 UNION ALL 在文件中生成标题,因此在应用 ORDER BY 1 子句后,标题现在位于文件的底部。咳咳咳咳……

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多