Я написал следующие функции по переносу данных из Access в Firebird
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
def getFirebirdFieldNames(firebird_cursor, tablename):
firebird_cursor.execute('select rdb$field_name from rdb$relation_fields where rdb$relation_name=\'%s\' order by rdb$field_position' % (tablename,))
field_names = list()
for c in firebird_cursor.fetchall():
field_names.append(c[0])
return field_names
def FirebirdDatetime(dt):
return '\'%s.%s.%s\'' % (str(dt.day).rjust(2,'0'),
str(dt.month).rjust(2,'0'),
str(dt.year).rjust(4,'0'))
def SelectFromAccessTable(tablename):
return 'select * from [' + tablename+']'
def InsertToFirebirdTable(tablename, row):
values=''
#values=values.encode('cp1251', 'replace')
# copyrow=[]
# print type(values)
for i in range(len(row)):
#print row[i]
#print type(row[i])
#temp=''
if (i<len(row)-1):
if type(row[i]) == int:
temp = str(row[i])
else:
if type(row[i]) == str:
temp = '\'%s\'' % (row[i],)
else:
if type(row[i]) == datetime.datetime:
temp =FirebirdDatetime(row[i])
else:
if type(row[i]) == decimal.Decimal:
temp = str(row[i])
else:
if row[i]==None:
temp='null'
values+=temp+', '
else:
if type(row[i]) == int:
temp = str(row[i])
else:
if type(row[i]) == str:
temp = '\'%s\'' % (row[i],)
else:
if type(row[i]) == datetime.datetime:
temp =FirebirdDatetime(row[i])
else:
if type(row[i]) == decimal.Decimal:
temp = str(row[i])
else:
if row[i]==None:
temp='null'
values+=temp
print temp
return 'insert into '+tablename+' values ('+values+')'
def AccessToFirebird(accesstablename, firebirdtablename, accesscursor, firebirdcursor):
SelectSql=SelectFromAccessTable(accesstablename)
for row in accesscursor.execute(SelectSql):
InsertSql=InsertToFirebirdTable(firebirdtablename, row)
InsertSql=InsertSql
print InsertSql
firebirdcursor.execute(InsertSql)
При вызове функции
в основном модуле вызывается функция
, в которой происходит вывод на экран формируемых insert запросов. Как видно из нижеприведенного вывода
присваивается
и в дальнейшем не изменяется, что противоречит логике программы (в цикле происходит обход всего
и в результате должен получиться запрос вставки со всеми передаваемыми значениями). Почему так происходит и как сделать, чтобы результат соответствовал цели? Привожу вывод формируемых запросов (база данных Борей в Access)
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785.
1
1
1
1
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (1, 1, 1, 1, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
2
2
2
2
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (2, 2, 2, 2, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
3
3
3
3
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (3, 3, 3, 3, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
4
4
4
4
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (4, 4, 4, 4, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
5
5
5
5
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (5, 5, 5, 5, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
6
6
6
6
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (6, 6, 6, 6, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
7
7
7
7
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (7, 7, 7, 7, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
8
8
8
8
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (8, 8, 8, 8, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
9
9
9
9
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (9, 9, 9, 9, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
10
10
10
10
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (10, 10, 10, 10, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
11
11
11
11
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (11, 11, 11, 11, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
12
12
12
12
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (12, 12, 12, 12, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
13
13
13
13
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (13, 13, 13, 13, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
14
14
14
14
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (14, 14, 14, 14, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
15
15
15
15
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (15, 15, 15, 15, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
16
16
16
16
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (16, 16, 16, 16, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
17
17
17
17
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (17, 17, 17, 17, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
18
18
18
18
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (18, 18, 18, 18, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
19
19
19
19
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (19, 19, 19, 19, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
20
20
20
20
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (20, 20, 20, 20, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
21
21
21
21
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (21, 21, 21, 21, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
22
22
22
22
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (22, 22, 22, 22, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
23
23
23
23
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (23, 23, 23, 23, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
24
24
24
24
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (24, 24, 24, 24, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
25
25
25
25
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (25, 25, 25, 25, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
26
26
26
26
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (26, 26, 26, 26, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
27
27
27
27
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (27, 27, 27, 27, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
28
28
28
28
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (28, 28, 28, 28, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
29
29
29
29
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into CLIENTS values (29, 29, 29, 29, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
1
1
1
1
1
1
1
1
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (1, 1, 1, 1, 1, 1, 1, 1, null, null, null, null, null, null, null, null, null, null)
2
2
2
2
2
2
2
2
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (2, 2, 2, 2, 2, 2, 2, 2, null, null, null, null, null, null, null, null, null, null)
3
3
3
3
3
3
3
3
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (3, 3, 3, 3, 3, 3, 3, 3, null, null, null, null, null, null, null, null, null, null)
4
4
4
4
4
4
4
4
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (4, 4, 4, 4, 4, 4, 4, 4, null, null, null, null, null, null, null, null, null, null)
5
5
5
5
5
5
5
5
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (5, 5, 5, 5, 5, 5, 5, 5, null, null, null, null, null, null, null, null, null, null)
6
6
6
6
6
6
6
6
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (6, 6, 6, 6, 6, 6, 6, 6, null, null, null, null, null, null, null, null, null, null)
7
7
7
7
7
7
7
7
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (7, 7, 7, 7, 7, 7, 7, 7, null, null, null, null, null, null, null, null, null, null)
8
8
8
8
8
8
8
8
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (8, 8, 8, 8, 8, 8, 8, 8, null, null, null, null, null, null, null, null, null, null)
9
9
9
9
9
9
9
9
null
null
null
null
null
null
null
null
null
null
insert into EMPLOYEES values (9, 9, 9, 9, 9, 9, 9, 9, null, null, null, null, null, null, null, null, null, null)
2
2
insert into ROLES values (2, 2)
2
2
insert into EMPLOYEES_ROLES values (2, 2)
1
1
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into DELIVERY values (1, 1, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
2
2
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into DELIVERY values (2, 2, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
3
3
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
insert into DELIVERY values (3, 3, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
|