首页 > 解决方案 > 将 CSV 从 Linux 导入 Azure SQL Server

问题描述

我有一个 Azure SQL Server 数据库和一个 linux 机器。我在 linux 机器上有一个 csv 文件,我想导入到 SQL Server 中。我已经创建了一个表,我将在其中导入此文件。

为什么这个命令返回一个Unknown argument: -U

bcp table in ~/test.csv -U myUsername -S databaseServerName -d dbName -q -c -t

当我重新排列传递给 bcp 的参数时,如下所示,它返回一个Unknown argument: -S

bcp table in ~/test.csv -S databaseServerName -d dbName -U myUsername -q -c -t

标签: sqlsql-serverbcp

解决方案


所以与文档相反:

https://docs.microsoft.com/en-us/sql/tools/bcp-utility?redirectedfrom=MSDN&view=sql-server-2017#U

我遇到了 bcp 不喜欢参数名称后有空格的问题。

https://granadacoder.wordpress.com/2009/12/22/bcp-export/

引用上面的文章:

//

另一个语法糖是 -S 参数后没有空格。如下所示

-SMyServerName\MyInstanceName

bcp.exe "SELECT cast(LastName as char(50)) , cast(FirstName as char(50)) , cast(MiddleName as char(50)) , cast(Suffix as char(50)) FROM MyAdventureWorksDB.Person.Person ORDER BY NEWID()" queryout PeopleRock.txt -c -t -T -SMyServerName\MyInstanceName

https://www.easysoft.com/products/data_access/odbc-sql-server-driver/bulk-copy.html#importing-data-table

检查你在linux中的语法糖(下面的例子来自上面的easysoft链接)

./bcp AdventureWorks.HumanResources.myTeam in ~/myTeam.csv \ -f ~/myTeam.Fmt -U mydomain\myuser -S mymachine\sqlexpress

注意上面有 dbname.schemaname.tablename (在上面的“in”字之前)


推荐阅读