温馨提示×

Debian怎么导入SQLServer数据

小樊
47
2026-07-01 17:17:04
栏目: 云计算

在 Debian 上把 SQL Server 的数据“导入”进来,常见有几种场景。下面按最常用、最稳妥的方式给你一个完整说明。


一、从 SQL Server 导出数据(推荐方式)

✅ 方案一:在 Windows / SQL Server 端导出为 SQL 或 CSV(最通用)

1️⃣ 导出为 .sql

-- 在 SSMS 中
右键数据库 → Tasks → Generate Scripts → 选择表/数据

然后把这个 .sql 文件拷贝到 Debian。

2️⃣ 在 Debian 导入到目标数据库(如 MySQL / PostgreSQL)

MySQL 示例

mysql -u user -p dbname < data.sql

PostgreSQL 示例

psql -U user -d dbname -f data.sql

✅ 优点:

  • 跨平台最稳定
  • 不需要直连 SQL Server

二、在 Debian 直接连接 SQL Server 导入数据

✅ 方案二:使用 mssql-tools + bcp(微软官方工具)

1️⃣ 安装 Microsoft 仓库

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list

sudo apt update

2️⃣ 安装工具

sudo apt install -y msodbcsql18 mssql-tools unixodbc

添加环境变量:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

3️⃣ 使用 bcp 导出 SQL Server 数据

bcp Database.dbo.TableName out data.csv -S server_ip -U sa -P password -c -t,

参数说明:

  • -c:字符模式
  • -t,:逗号分隔

4️⃣ 导入到 Debian 上的数据库

MySQL 示例

mysql -u user -p dbname -e "LOAD DATA INFILE '/path/data.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;"

PostgreSQL 示例

psql -U user -d dbname -c "\COPY table_name FROM '/path/data.csv' CSV HEADER;"

✅ 优点:

  • 适合大表
  • 自动化脚本友好

三、Debian 直连 SQL Server 读取数据(ETL)

✅ 方案三:使用 Python(最灵活)

pip install pymssql pandas sqlalchemy
import pandas as pd
from sqlalchemy import create_engine

engine = create_engine(
    "mssql+pymssql://user:password@sqlserver_ip:1433/dbname"
)

df = pd.read_sql("SELECT * FROM table_name", engine)

# 导入到 MySQL / PostgreSQL
df.to_sql("table_name", target_engine, if_exists="append", index=False)

✅ 适合:

  • 定时同步
  • 数据清洗
  • 多表转换

四、直接导入到 SQL Server(如果你是想反过来)

如果你是 Debian → SQL Server

bcp dbname.dbo.table in data.csv -S sqlserver -U user -P password -c

五、常见问题

❓ Debian 能直接装 SQL Server 吗?

❌ 不能(SQL Server 官方只支持 Ubuntu / RHEL)

❓ 中文乱码?

  • 导出时指定 -C UTF-8
  • 数据库编码保持一致

总结对比

方法 适合场景
SSMS 导出 SQL 小中型数据
bcp + CSV 大表、批量
Python 复杂同步
直连导入 不推荐

如果你能告诉我:

  • 目标数据库是 MySQL / PostgreSQL / 还是别的?
  • 数据量多大?
  • 是否需要定时同步?

我可以给你一份 完全定制的导入方案

0