4
4
using DuckDB . NET . Test . Helpers ;
5
5
using System ;
6
6
using System . Data . Common ;
7
+ using System . Diagnostics ;
7
8
using System . IO ;
8
9
using System . Linq ;
9
10
using static DuckDB . NET . Native . NativeMethods ;
@@ -25,6 +26,8 @@ static void Main(string[] args)
25
26
AdoNetSamples ( ) ;
26
27
27
28
LowLevelBindingsSample ( ) ;
29
+
30
+ BulkDataLoad ( ) ;
28
31
}
29
32
30
33
private static void DapperSample ( )
@@ -134,6 +137,56 @@ private static void LowLevelBindingsSample()
134
137
}
135
138
}
136
139
}
140
+
141
+ private static void BulkDataLoad ( )
142
+ {
143
+ Stopwatch stopwatch = Stopwatch . StartNew ( ) ;
144
+
145
+ if ( File . Exists ( "file.db" ) )
146
+ {
147
+ File . Delete ( "file.db" ) ;
148
+ }
149
+
150
+ //using var connection = new DuckDBConnection("DataSource=:memory:");
151
+ using var connection = new DuckDBConnection ( "Data Source=file.db" ) ;
152
+ connection . Open ( ) ;
153
+
154
+ using ( var duckDbCommand = connection . CreateCommand ( ) )
155
+ {
156
+ var table = "CREATE TABLE AppenderTest(i INTEGER, f FLOAT, d DOUBLE,c VARCHAR);" ;
157
+ duckDbCommand . CommandText = table ;
158
+ duckDbCommand . ExecuteNonQuery ( ) ;
159
+ }
160
+
161
+ var rows = 100000 ;
162
+ using ( var appender = connection . CreateAppender ( "AppenderTest" ) )
163
+ {
164
+ stopwatch . Start ( ) ;
165
+ for ( var i = 0 ; i < rows ; i ++ )
166
+ {
167
+ var row = appender . CreateRow ( ) ;
168
+ row
169
+ . AppendValue ( i )
170
+ . AppendValue ( Convert . ToSingle ( i + 2 ) )
171
+ . AppendValue ( Convert . ToDouble ( i + 4 ) )
172
+ . AppendValue ( $ "varchar { i . ToString ( ) } ")
173
+ . EndRow ( ) ;
174
+ }
175
+ stopwatch . Stop ( ) ;
176
+ }
177
+
178
+ using var command = connection . CreateCommand ( ) ;
179
+ command . CommandText = "SELECT count(1) as cnt FROM AppenderTest" ;
180
+ using var reader1 = command . ExecuteReader ( ) ;
181
+ PrintQueryResults ( reader1 ) ;
182
+ command . CommandText = "SELECT * FROM AppenderTest limit 10" ;
183
+ using var reader2 = command . ExecuteReader ( ) ;
184
+ PrintQueryResults ( reader2 ) ;
185
+ Console . WriteLine ( $ "ElapsedMilliseconds { stopwatch . ElapsedMilliseconds } ") ;
186
+ Console . WriteLine ( $ "connection state before { connection . State } ") ;
187
+ Console . WriteLine ( $ "connection state after { connection . State } ") ;
188
+
189
+ }
137
190
138
191
private static void PrintQueryResults ( DbDataReader queryResult )
139
192
{
0 commit comments