使用Ubuntu系统来运行sqlcmd和bcp命令
敬愛的优秀的Web工程师们,大家好。我知道你们可能不相信有日本语言表的系统,但是我想告诉你们一个好消息:Microsoft♡Linux。微软不仅为Linux提供了支持,还提供了能在Linux上运行的SQL Server工具——bcp和sqlcmd。
我想尝试使用Ubuntu的bcp命令将数据导出为CSV文件,然后将CSV文件导入到表中。当然,数据库名、表名和列名都是用日语。
我计划在Ubuntu环境中尝试使用bcp命令和sqlcmd命令。
环境
服务器
-
- Windows2012R2 評価版
-
- SQLServer 2016 Express Edition
データベース名 日本語システム
テーブル名 タイトル
カラム名 タイトルno,タイトル
客户
-
- Ubuntu 16.04.2 LTS (x86_64)
-
- 下記のパッケージがInstall済み
msodbcsql
unixodbc-dev
mssql-tools
请参考使用Microsoft官方驱动程序通过Ubuntu安装和访问SQL Server的方式,例如安装msodbcsql和mssql-tools。
不能使用bcp命令,但可以使用sqlcmd命令。
总结来说,如果数据库名称和表名是日语,将无法使用。
无论是使用sqlcmd,还是使用日语数据库名称或日语表名,都没有问题。
如果是在BCP的情况下,只有列名是日语的情况下,可以将其导出为CSV文件。
做实验
如果是以日语为名的数据库名和日语表名的情况下。
我尝试使用日文给数据库命名,并使用日文给表命名。然后,我将尝试使用bcp命令导出它。
$ sqlcmd -S IPAddr -U sa -P Password
1> use 日本語システム
2> go
データベース コンテキストが '日本語システム' に変更されました。
1> select * from 名前
2> go
ID 名前
----------- --------------------
1 yusuke
2 Microsoft love Linux
$ bcp 日本語システム.dbo.名前 out name.csv -c -t ',' -S IPAddr -U sa -P Passowrd
SQLState = 37000, NativeError = 4060
Error = [unixODBC][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Sn�▒g▒BU▒_▒▒▒▒▒▒ "日本語システム" ▒▒Q~[▒�▒k1WW~W_
SQLState = 28000, NativeError = 18456
Error = [unixODBC][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]▒▒▒▒ 'sa' o�▒gM~[▒gW_
在连接时出现了奇怪的乱码,并且操作失败了。
当我在执行 SQLState = 37000, NativeError = 4060 SQL State = 28000, NativeError = 18456 进行搜索时,出现了连接错误的样子,但我只能认为是因为日语的数据库名和表名导致无法连接。
因此,我决定创建下面的表格并再次进行导出尝试。
将以日语为列名的表导出
~$ sqlcmd -S IPAddr -U sa -P Password
1> use test1
2> select * from namelist
3> go
データベース コンテキストが 'test1' に変更されました。
ID 名前
----------- --------------------
1 yusuke
2 Microsoft love Linux
如下所示,它能够正常运行。
$ bcp test1.dbo.namelist out name.csv -c -t ',' -S IPAddr -U sa -P Password
Starting copy...
4 rows copied.
Network packet size (bytes): 4096
以下的内容没有问题。
$ cat name.csv
1,yusuke
2,Microsort love Linux
在Windows Server中,有没有bcp命令可用?
可以无障碍地导入日语的数据库名称和日语的表格名称。
PS > cat .\name.csv
1,yusuke
PS > bcp 日本語システム.dbo.名前 in c:\users\administrator\name.csv -c -t ',' -S localhost -T
コピーを開始しています...
1 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計 : 15 平均 : (66.67 行/秒)
PS >
请参考以下网站
BCP实用工具
SQL Server的BCP命令
由于Microsoft的命令过于繁琐且难以理解,我先尝试了这个选项。