Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions EmployeeFullNames.bcp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
Abdul "Kalam" 00000000000084D1
Narendra Modi 00000000000084D2
Rahul Gandhi 00000000000084D3
Rabindranath Tagore 00000000000084D4
Donald Trump 00000000000084D5
Satya Nadella 00000000000084D6
Sam Altman 2025-01-28 05:15:30.0000000 00000000000084D7 Wide str 1 210 123456789 4.2743594E+27
Jeff Bezos 2025-01-28 05:15:30.0000000 00000000000084D8 Wide str2 1 127 123456789 5.8486031E+35
Jeff Bezos 2025-01-28 05:15:30.0000000 00000000000084D9 Wide str2 1 127 123456789 5.8486031E+35
direct direct 00000000000084DC 12.34
Harry Potter 2025-01-28 05:15:30.0000000 00000000000084DD Wide str3 1 127 123456789 12.34 12.34 34.12
Harry Potter 2025-01-28 05:15:30.0000000 00000000000084DE Wide str3 1 127 123456789 12.34 12.34 12345
Float Cast 2025-01-28 05:15:30.0000000 00000000000084DF Wide str3 1 127 123456789 12.34 12.34 0.567
Float Cast 2025-01-28 05:15:30.0000000 00000000000084E0 Wide str3 1 127 123456789 12.34 12.34
Float Cast 2025-01-28 05:15:30.0000000 00000000000084E1 Wide str3 1 127 123456789 12.34 12.34
Test fix 2025-01-28 05:15:30.0000000 00000000000084E2 Wide str3 1 127 123456789 12.34 12.34
Harry Potter2 2025-01-28 05:15:30.0000000 00000000000084E3 Wide str3 1 127 123456789 12.34 12.34
floattest scientificNotation 2025-01-28 05:15:30.0000000 00000000000084E4 Wide str3 1 127 123456789 1.7899999E+10 12.34
floattest scientificNotation 2025-01-28 05:15:30.0000000 00000000000084E5 Wide str3 1 127 123456789 12.34 12.34
is_stmt_prepared test 2025-01-28 05:15:30.0000000 000000000000C355 Wide str3 1 127 123456789 12.34 12.34
test approx Float 2025-01-28 05:15:30.0000000 000000000000C356 Wide str3 1 127 123456789 12.34 12.34
test22 approx Float 2025-01-28 05:15:30.0000000 000000000000C357 Wide str3 1 127 123456789 12.34 12.34
test22 approx Float 2025-01-28 05:15:30.0000000 000000000000C358 Wide str3 1 127 123456789 12.345 12.34
FetchAll Test 2025-01-28 05:15:30.0000000 000000000000C359 Wide str3 1 127 123456789 12.345 12.34
FetchAll Test 2025-01-28 05:15:30.0000000 000000000000C35A Wide str3 1 127 123456789 12.345 12.34
FetchAll Test 2025-01-28 05:15:30.0000000 000000000000C35B Wide str3 1 127 123456789 12.345 12.34
FetchAll Test 2025-01-28 05:15:30.0000000 000000000000C35C Wide str3 1 127 123456789 12.345 12.34
FetchAll Test2 2025-01-28 05:15:30.0000000 000000000000C35D Wide str3 0 127 123456789 12.345 12.34
FetchAll Test2 2025-01-28 05:15:30.0000000 000000000000C35E Wide str3 0 127 123456789 12.345 12.34
FetchAll Test2 2025-01-28 05:15:30.0000000 000000000000C35F Wide str3 0 127 123456789 12.345 12.34
1 Test 000000000000C36A 1.00000
1 Test 000000000000C36B 1.00000
Harry Potter 2025-01-28 05:15:30.0000000 00000000000084DA Wide str3 1 127 123456789 5.8486031E+35 12.34
2025-01-28 05:15:30.0000000 00000000000084E6 Wide str3 1 127 123456789 12.34 12.34
2025-01-28 05:15:30.0000000 00000000000084E7 Wide str3 1 127 123456789 12.34 12.34
main check 2025-01-28 05:15:30.0000000 00000000000084E8 Wide str3 1 127 123456789 12.34 12.34
is_stmt_prepared 00000000000084EA
is_stmt_prepared 05:15:30.0000000 00000000000084EB
is_stmt_prepared test 2025-01-28 05:15:30.0000000 00000000000084F6 Wide str3 1 127 123456789 12.34 12.34
14 changes: 14 additions & 0 deletions EmployeeFullNames.fmt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
14.0
12
1 SQLCHAR 0 50 "\t" 1 FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 50 "\t" 2 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 11 "\t" 3 date_ ""
4 SQLCHAR 0 19 "\t" 4 time_ ""
5 SQLCHAR 0 16 "\t" 5 datetime_ ""
6 SQLCHAR 0 20 "\t" 6 wchar_ SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 1 "\t" 7 bool_ ""
8 SQLCHAR 0 5 "\t" 8 tinyint_ ""
9 SQLCHAR 0 21 "\t" 9 bigint_ ""
10 SQLCHAR 0 30 "\t" 10 float_ ""
11 SQLCHAR 0 30 "\t" 11 double_ ""
12 SQLCHAR 0 41 "\r\n" 12 numeric_ ""
4 changes: 4 additions & 0 deletions TestBCP.fmt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
14.0
2
1 SQLCHAR 0 200 "\t" 1 id SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 200 "\r\n" 2 names SQL_Latin1_General_CP1_CI_AS
5 changes: 5 additions & 0 deletions data_unicode.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
1 Alice
2 Bob
3 Charlie
4 David
5 Eve
69 changes: 68 additions & 1 deletion mssql_python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,81 @@
from .logging_config import setup_logging, get_logger

# Constants
from .constants import ConstantsDDBC
from .constants import ConstantsDDBC, BCPControlOptions, BCPDataTypes

# BCP
from .bcp_options import BCPOptions, ColumnFormat
from .bcp_main import BCPClient

# GLOBALS
# Read-Only
apilevel = "2.0"
paramstyle = "qmark"
threadsafety = 1

# Create direct variables for easier access to BCP data type constants Read-only
# Character/string types
SQLTEXT = BCPDataTypes.SQLTEXT.value
SQLVARCHAR = BCPDataTypes.SQLVARCHAR.value
SQLCHARACTER = BCPDataTypes.SQLCHARACTER.value
SQLBIGCHAR = BCPDataTypes.SQLBIGCHAR.value
SQLBIGVARCHAR = BCPDataTypes.SQLBIGVARCHAR.value
SQLNCHAR = BCPDataTypes.SQLNCHAR.value
SQLNVARCHAR = BCPDataTypes.SQLNVARCHAR.value
SQLNTEXT = BCPDataTypes.SQLNTEXT.value

# Binary types
SQLBINARY = BCPDataTypes.SQLBINARY.value
SQLVARBINARY = BCPDataTypes.SQLVARBINARY.value
SQLBIGBINARY = BCPDataTypes.SQLBIGBINARY.value
SQLBIGVARBINARY = BCPDataTypes.SQLBIGVARBINARY.value
SQLIMAGE = BCPDataTypes.SQLIMAGE.value

# Integer types
SQLBIT = BCPDataTypes.SQLBIT.value
SQLBITN = BCPDataTypes.SQLBITN.value
SQLINT1 = BCPDataTypes.SQLINT1.value
SQLINT2 = BCPDataTypes.SQLINT2.value
SQLINT4 = BCPDataTypes.SQLINT4.value
SQLINT8 = BCPDataTypes.SQLINT8.value
SQLINTN = BCPDataTypes.SQLINTN.value

# Floating point types
SQLFLT4 = BCPDataTypes.SQLFLT4.value
SQLFLT8 = BCPDataTypes.SQLFLT8.value
SQLFLTN = BCPDataTypes.SQLFLTN.value

# Decimal/numeric types
SQLDECIMAL = BCPDataTypes.SQLDECIMAL.value
SQLNUMERIC = BCPDataTypes.SQLNUMERIC.value
SQLDECIMALN = BCPDataTypes.SQLDECIMALN.value
SQLNUMERICN = BCPDataTypes.SQLNUMERICN.value

# Money types
SQLMONEY = BCPDataTypes.SQLMONEY.value
SQLMONEY4 = BCPDataTypes.SQLMONEY4.value
SQLMONEYN = BCPDataTypes.SQLMONEYN.value

# Date/time types
SQLDATETIME = BCPDataTypes.SQLDATETIME.value
SQLDATETIM4 = BCPDataTypes.SQLDATETIM4.value
SQLDATETIMN = BCPDataTypes.SQLDATETIMN.value
SQLDATEN = BCPDataTypes.SQLDATEN.value
SQLTIMEN = BCPDataTypes.SQLTIMEN.value
SQLDATETIME2N = BCPDataTypes.SQLDATETIME2N.value
SQLDATETIMEOFFSETN = BCPDataTypes.SQLDATETIMEOFFSETN.value

# Special types
SQLUNIQUEID = BCPDataTypes.SQLUNIQUEID.value
SQLVARIANT = BCPDataTypes.SQLVARIANT.value
SQLUDT = BCPDataTypes.SQLUDT.value
SQLXML = BCPDataTypes.SQLXML.value
SQLTABLE = BCPDataTypes.SQLTABLE.value

# BCP special values
SQL_VARLEN_DATA = BCPDataTypes.SQL_VARLEN_DATA.value
SQL_NULL_DATA = BCPDataTypes.SQL_NULL_DATA.value

from .pooling import PoolingManager
def pooling(max_size=100, idle_timeout=600):
# """
Expand Down
Loading