您现在的位置是:首页 >技术交流 >CenoOS连接 SQL Server网站首页技术交流
CenoOS连接 SQL Server
1、问题:
连接:Provider=SQLOLEDB.1;Persist Security Info=False;User ID=XXX;password=XXXXX;Initial Catalog=XXXXX;Data Source=XXXXX;
解析:
示列 | Column 2 |
---|---|
User ID | 数据库的用户名 |
password | 数据库的密码 |
Initial Catalog | 数据库账号 |
Data Source | host |
2、解决步骤
按照以下步骤进行:
-
下载 FreeTDS 源代码包:
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.18.tar.gz
-
解压源代码包:
tar xzf freetds-1.3.18.tar.gz
-
进入解压后的目录:
cd freetds-1.3.18
-
配置和编译 FreeTDS:
./configure --prefix=/usr/local --with-tdsver=7.4 --enable-msdblib make sudo make install
这将使用指定的选项配置和编译 FreeTDS,并将其安装到
/usr/local
目录下。 -
配置 ODBC 驱动程序:
创建
odbcinst.ini
文件并编辑它:sudo vi /etc/odbcinst.ini
在文件中添加以下内容,以配置 FreeTDS 驱动程序:
[FreeTDS] Description = FreeTDS Driver = /usr/local/lib/libtdsodbc.so
保存并关闭文件。
-
配置 ODBC 数据源:
创建
odbc.ini
文件并编辑它:sudo vi /etc/odbc.ini
在文件中添加你的数据源配置,例如:
userdb换成自己的数据库[MyDataSource] Driver = FreeTDS Server = 10.16X.XXX.XX Port = 1433 Database = userdb TDS_Version = 8.0
示列 | Column 2 |
---|---|
10.16X.XXX.XX | 换成自己的ip |
userdb | 换成自己的数据库 |
保存并关闭文件。
-
配置环境变量:
打开
.bashrc
文件:vi ~/.bashrc
在文件末尾添加以下行:
export ODBCSYSINI=/etc
保存并关闭文件。
为了使环境变量生效,运行以下命令:
source ~/.bashrc
-
验证配置:
运行以下命令来验证 ODBC 驱动程序和数据源的配置是否正确:
isql -v MyDataSource username password
这将使用你配置的数据源连接到数据库。如果连接成功,将显示 SQL 命令提示符SQL>
,输入quit退出。
3、拓展
3.1 常用查询
一旦你使用 isql -v MyDataSource username password
命令成功进入数据库的命令行界面,你可以使用 SQL 查询语句来检索和操作数据。
以下是一些常用的 SQL 查询语句示例:
-
列车所有的表
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
-
查询所有数据:
SELECT * FROM your_table;
将
your_table
替换为你想要查询的实际表名。 -
查询特定列的数据:
SELECT column1, column2 FROM your_table;
将
column1
和column2
替换为你想要查询的实际列名。 -
使用条件查询数据:
SELECT * FROM your_table WHERE condition;
将
your_table
替换为表名,并将condition
替换为你的查询条件,例如column = value
。 -
对结果进行排序:
SELECT * FROM your_table ORDER BY column;
将
your_table
替换为表名,并将column
替换为你希望按其进行排序的列名。 -
使用聚合函数计算统计值:
SELECT COUNT(*) FROM your_table; SELECT SUM(column) FROM your_table; SELECT AVG(column) FROM your_table;
将
your_table
替换为表名,并将column
替换为你想要计算统计值的列名。 -
限制返回数量
SELECT TOP 4 * FROM your_table;
这只是一些基本的查询示例。你可以根据你的实际需求编写适当的 SQL 查询语句来检索和操作数据。
在 isql
命令行界面中,你可以直接输入以上 SQL 查询语句,并按 Enter 键执行。结果将以表格形式显示在命令行界面上。
3.2 SQL Server 语句规则
在 SQL Server 中,以下是一些常见的语句规则:
-
语句必须以分号 (
;
) 结尾,尤其是当多个语句在同一行上时。 -
SQL 语句不区分大小写,但是标识符(例如表名、列名、变量名等)是区分大小写的。
-
SQL 语句可以跨多行书写,但在语句的每个子句之间应该使用空格或换行符进行分隔,以提高可读性。
-
注释可以使用
--
进行单行注释,或使用/* ... */
进行多行注释。 -
SELECT 语句用于查询数据,INSERT 语句用于插入数据,UPDATE 语句用于更新数据,DELETE 语句用于删除数据。
-
WHERE 子句用于指定条件,以筛选出满足条件的数据。
-
ORDER BY 子句用于对结果集进行排序。
-
GROUP BY 子句用于对结果集进行分组。
-
JOIN 子句用于将多个表关联起来,以获取相关联的数据。
-
子查询是嵌套在其他查询中的查询,用于在一个查询中使用另一个查询的结果。
-
存储过程是一系列预定义的 SQL 语句,可作为单个单元执行。
-
触发器是与表相关联的数据库对象,用于在表上发生特定事件时自动执行一系列操作。
3.3 python调用
import pyodbc
# 定义连接字符串
conn_str = 'DSN=MyDataSource;UID=username;PWD=password'
# 连接到数据源
conn = pyodbc.connect(conn_str)
# 创建游标
cursor = conn.cursor()
# 这个可以遍历数据库中的所有数据表
cursor.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'")
tables = cursor.fetchall()
for table in tables:
print(table[0])
# 执行查询语句
cursor.execute("SELECT * FROM your_table")
# 获取查询结果
results = cursor.fetchall()
# 遍历结果并打印
for row in results:
print(row)
# 关闭游标和连接
cursor.close()
conn.close()